我见过Javascript中的自调用函数是这样写的:
(function () {
// foo!
})();
但是我也看到过这样写的:
(function () {
// bar!
}());
在句法上,它们做的事情完全一样。实际上,我个人的习惯是第一种格式,但是我应该注意这两种格式之间有什么区别吗?比如浏览器问题之类的?
例如,一件非常微不足道的事情是,如果第二种格式应该可靠地工作,那么这就意味着这样的事情也应该是可能的:
function () {
// shut the front door! saved two characters right there!
}();
不过这会严重影响可读性。
最佳答案
首先:
正如您假设的那样,自调用匿名函数的前两个版本完全没有区别。没有浏览器链接、怪癖,完全取决于个人喜好(道格拉斯·克罗克福德顺便称后者为“dog balls”)。
第二个:
function() {
}()
不会按设计工作,因为该语句创建了一个函数语句/声明。您需要一个函数表达式 来立即调用自身。要创建函数表达式,您可以做很多事情。将整个语句放在括号中是一种方法,但您也可以这样写
!function() {
}()
或
+function() {
}
所有这些运算符都会构成一个表达式。
关于javascript - 我应该如何声明我的自调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304793/