可能重复:
!function() { } () vs (function() { })()
!function() { } () vs (function() { })()
我刚阅读Twitter的新版Bootstrap(2.0)源码时注意到自调匿名函数之前有一个感叹号。当我看到这个时,我立刻想:“哦,糟糕,有一种新的更好的方法来做这件事了吗?”。
你可以自己看看!
- http://markdotto.com/bs2/js/bootstrap-modal.js
- http://markdotto.com/bs2/js/bootstrap-dropdown.js
- http://markdotto.com/bs2/js/bootstrap-scrollspy.js
- http://markdotto.com/bs2/js/bootstrap-popover.js
- http://markdotto.com/bs2/js/bootstrap-tooltip.js
- http://markdotto.com/bs2/js/bootstrap-tab.js
无论如何,有什么区别?他们的所有JavaScript插件(用于Bootstrap)都一致使用它,所以肯定有原因。
我还注意到另一件事就是在这之后有一个"use strict"。我不认为这与我的先前问题有关,但是有人可以解释一下吗?
谢谢!
!function(){}()
在 Google 的 Closure 编译器中会抛出“可疑代码”警告,而;(function(){})()
和(function(){}())
则不会。有趣的是。 - John