JavaScript JavaScript 新手提问

ibachue · 2013年03月27日 · 最后由 Saito 回复于 2013年04月17日 · 2108 次阅读

诸神啊,

请教一个 Javascript 的低级问题 在https://github.com/feelinglucky/chrome-plugin-to-replace-fuck-flash-player/blob/master/sites/youku.js这个项目中

~function() {
 // ...
}

是什么语法?谢谢!

(function(){})() immediate function 的一种写法 不仅可以用~ 还可以用!

~ 是 bitwise Not。放在 function 前会改变整个 statement 的优先级。一般,这个 function() {} 要马上 call 一下的话(这是个 closure),是这样做的:

(function() {
})();

前面用上 ~ 后,() 的优先级降低,效果是等同的。

另外一种常见的作法是用 !,如:

!function() {
  // here we go
} ();

Update:

上述表述并不正确,请参见一楼的说明。这里并不是优先级的原因;而是看 function 前有没有其他操作符,如果有,它是一个表达式并马上被调用,如果没有则被当成一个函数声明,在后面再跟 () 的话其实会报错。

再加个例子:

1 + function() { console.log("run"); } (); // 会正确输出 log "run"

function() { console.log("run"); } () + 1; // 报错

@krazy @ashchan I see 谢谢诸神

学习了,特此感谢

@AReverie @iBachue 好孩子不要学,看得懂就行。

哇塞 还有这样的语法。。

即时调用的 trick. 很多符号都可以。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号