文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程ScriptJavaScript写作技巧,函数A中调用函数B, 怎样在函数B中写代码中断函数A的运行?
精品推荐
特别推荐
·主页javascript特效19则
·各种网页媒体播放器代码及详解
·用户体验:JS实现仿新浪信息提示效果
·网页特效:图片随机显示实例详解
·JavaScript入门学习书籍的阶段选择
·Javascript代码轻松隐藏网页源文件
·网页制作:JavaScript仿Windows关机效果
·网页制作Javascript经典小技巧总结
·JavaScript的9个陷阱及评点
·简单介绍用JSP来实现文件下载功能的几种方式
·网页播放器实现全屏的方法总结
·菜鸟学习javascript实例教程
·JavaScript 经典代码大全
·汇总:一些不错的使用频率比较高的JS函数
·Javascript模拟的DOS窗口
·JavaScript仿Windows关机效果
·仿windows选项卡效果拾零
·JavaScript经典效果集锦
·jscript/javascript条件编译
·Js之软键盘实现(源码)
热点TOP10
·一个很好的日历控件(采用javascript编写)
·Golive CS2视频教程:JavaScript插件
·JavaScript经典效果集锦
·HTC——浏览器上的舞者
·Java一点通:中文识别问题全解决办法
·我学习使用java的一点体会(三)
·学习JavaScript的事件
·JavaScript Dom编程:介绍学习书籍
·基于javascript的拼音字典及应用举例
·JS分层的概念与本地存贮
·Javascript实现打印网页中定义的部分内容
·JavaScript/JS实现标题栏跑马灯
·JavaScript中split字符串函数
·B/S开发常用JavaScript技术
·用confirm确认提交动作,提交确认提示
·JavaScript判断Form中的Radio是否有未选中的
·实例分析:仿6room网站图片链接效果
·JavaScript验证整个表单
·一个以Javascript+xml的树型列表
·javascript 动态添加表格行

JavaScript写作技巧,函数A中调用函数B, 怎样在函数B中写代码中断函数A的运行?

日期:2006年12月18日 作者: 查看:[大字体 中字体 小字体]


function funcA(){
       funcB();
       //other code
 }
 怎么定义函数B,让B在运行的时候不仅能终止B本身,而且能终止函数A的运行?

 这是个非常规的问题,我们分两大部分讨论. (1.为什么一定这样做 2.怎么实现)

1. 显然,这种编码方式已经打乱了正规的程序编写原则,我们编写函数的目的就是为了封装,为了实现代码的模块化. 如果B能让A退出返回, 那这种编码方式肯怕比滥用 goto 语句还滥了.

这样做有必要吗?为什么一定要这样做....??

    答案如下:
   假如我们要扩展Array的prototype.  比方说:定义一个  find方法,用来返回第一个让 执行函数为真的数组元素.

 1 <script>
 2 // by go_rush(阿舜) @ http://ashun.cnblogs.com
 3
 4 Array.prototype.each=function(f){
 5     for(var i=0;i<this.length;i++) f(this[i],i,this)
 6 }
 7
 8 Array.prototype.find=function(f){  
 9     var result;
10     this.each(function(value,index,arr){
11         if (f(value,index,arr)) result=value
12     })
13     return result
14 }
15
16 var arr=[1,2,3,4,5,7,9]
17
18 function foo(v){    //检测是不是偶数
19     return v%2==0
20 }
21 alert(arr.find(foo))
22
23 </script>

结果另我们大失所望.
首先: 在逻辑上,程序是错误的,因为我们期望返回第一个偶数,但是程序却返回的是最后一个偶数.
其次: 程序的效率是低下的,那怕是找最后一个偶数,他在找到偶数4后,仍然检测了4后面的所有元素.这个动作
是多余的. 

怎么办呢? 请看代码中的第11行,如果检测到 f(value,index,arr)  为真的时候,能够直接中断函数 this.each()该多好啊.  效率,结果,双赢的局面.

所以对于问题一 "为什么一定这样做"  , 在这里,具体到这个应用上,有足够的理由让函数 B()来中断函数A()

看到这里,你可能会问: 你的 find 方法为什么不这样写?

Array.prototype.find=function(f){  
 for(var i=0;i<this.length;i++){
     if (f(this[i],i,this)) return this[i]
 }
}

这样不整个世界都清净了吗.

是的,如果我只是简单的写一个find 这样写肯定没问题,但是如果现在我正在写一个复杂的应用,或一个写一个js框架呢

我要实现一系列的
Array.prototype.all
Array.prototype.any
Array.prototype.each
Array.prototype.map
Array.prototype.find
Array.prototype.findAll
Array.prototype.grep
Array.prototype.inject
......  详细请参见 prototype.js v1.4 有上十种方法等着实现呢,我怎不可能每个方法都用 for循环一个一个的
遍历数组把.  我肯定要实现一个 each 方法作为统一入口吧.

闲话少说,我们来看怎么解决问题:
 要在 B函数中终止A函数,并返回结果, 目前我能想到的办法就是用异常 try{}catch(x){}


实现代码
 1 <script>
 2 // by go_rush(阿舜) @ http://ashun.cnblogs.com

[1] [2] [3] 下一页 




上一篇:在数据库里取前10条数据

下一篇:C# GridView 排序及分页

JavaScript写作技巧,函数A中调用函数B, 怎样在函数B中写代码中断函数A的运行? 相关文章:
·电脑高手的140个电脑技巧
·小技巧 教你吓走要动你电脑的人
·楼梯的上做爱技巧 (图)
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·输入法技巧放送:极点五笔技巧两则
·IE7.0浏览器有用的9个使用技巧
·史上最全的QQ技巧整合大放送
·某高手总结的电脑技巧
·WindowsXP超级技巧
·每周电脑应用技巧荟萃
JavaScript写作技巧,函数A中调用函数B, 怎样在函数B中写代码中断函数A的运行? 相关软件:
·C函数浏览
·中文版Excel 2003实例与技巧
·Photshop照片润饰技巧
·摄影技巧与欣赏
·老板是怎样炼成的
·电脑技巧精彩文章一百篇
·红太阳是怎样升起的:延安整风运动的来龙去脉
·与客户有效沟通的N个技巧
·招聘面试技巧 视频教程
·在光盘上运行的 win98

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot