`

js 自行函数

    博客分类:
  • js
 
阅读更多
有很多方法立即执行匿名函数,简单的整理就有下面三种的典型方式(还有其他方式的,欢迎告知):

方式一

(function() {
    // …
})();

方式二

void function() {
  // …
}();

方式三

~function() {
   // …
}();

方式一 和 方式二 大家可能都看到过,这里主要说明下 方式三。在说明 方式三 之前,我们现回顾下运算符“~”(位取反)在 EMCAScript 中的定义(第五版的第 72 页),简单的翻译下:

1. 按运算符结合语句

2. 将旧值转换为 32 位整型

3. 执行运算符后的语句

4. 转换之行结果为 32 位整形并返回

从上面可以了解,其实位运算符都能立即返回后面表达式的值。其实其他位运算符都可以达到这样的目的,例如:

!function() {
    // …
}();

等都可以达到我们的目的。所以其实用“~”也并无其他的原因,仅仅是代码“看着好看”而已 :^)


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

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

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

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

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

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

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

* 考虑效率优先,那么使用 方式二
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics