网络编程
位置:首页>> 网络编程>> JavaScript>> 匿名函数的写法(2)

匿名函数的写法(2)

 来源:Gracecode.com 发布时间:2010-01-06 13:32:00 

标签:函数,匿名函数,JavaScript

效率

与其说三种方式执行匿名函数的效率,到不如直接分析个运算符的执行效率。那么我们对比再来看看“()”以及“void”在 EMCA 规范中的定义

组运算符(第五版 66 页)

  1. 返回表达式的执行结果

void(第五版 70 页)

  1. 按运算符结合语句

  2. 执行

  3. 返回 undefined

由于组运算符还需要执行语句并返回语句块返回的值,对比 void 会多个获取语句块的操作(虽然消耗不了多少的性能),因此在这种情况下 void 的性能要优于组运算符。

对比两者,那么 方式三 的性能对比很明显要低于前两者。总结起来就是光从语法的角度上分析,在上面三者匿名函数的方式中 方式二 优于 方式一,方式三 的效率最低。

总结

思考下三者之间的优异

  • 方式一的写法很常见而且很保险,所以并不会有人因为你使用这种方式而责怪你

  • 但使用方式一的同学,可能经常会犯忘记匹配括号的“毛病”(特别是语句块很长时,就经常搞错)

  • 使用位运算符执行匿名函数很新潮,用来装酷不错

  • 很多 IDE (如 IDEA)以及语法高亮工具不支持 方式三 的写法

  • void 效率最好,但总感觉相比其他两种实现方式非常的臃肿(仅仅多几个字符?)

那么

  • 综合代码量以及效率等情况考虑,用 方式一 没错的

  • 在需要额外节省代码的极端情况,用 方式三

  • 考虑效率优先,那么使用 方式二

这里要说明下,其实三种方式效率之间的差异非常小。因此单纯拿效率来考虑采用那种方式,几乎是站不住脚的。

具体采用何种方案,需要根据实际情况来考虑。比如我自己,经常会使用方式三,是因为 1、方便(加一个字符即可) 2、在函数长的情况下匹配括号会很头晕 3、用起来很酷,但 方式三 会经常让看我代码的组员感到困扰。

如果在些类库等框架性质的基础代码,用 方式一 最保险同时大家都容易看懂,是最保险的选择。

看见 阮一峰 的 Blog 上有篇文章说避免使用 void 运算符。其实在 Javascript 中, void 的使用方面还是比较常见的。

例如,我们会强制让某些调用返回 undefined 以阻止浏览器等默认行为(我们经常看到的就比如很多 Javascript Bookmark 前面就经常会加上 void 运算符)。

所以,还是“物尽其用”吧。

-- EOF --

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com