javascript - 我应该如何声明我的自调用函数?

标签 javascript anonymous-function

我见过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/

相关文章:

xml - 在 perl 的子程序中声明全局变量

javascript - 如何触发网页上 HTML 按钮的点击?

JavaScript/jQuery : Why is my increment not working?

javascript - Angularjs $rootScope 在 Controller 中不可见

javascript - 如何禁用可排序动画 Jquery

javascript - 如何使用匿名函数使某些函数和变量在 Javascript 中全局可用?

kotlin - 如何将挂起函数作为显式参数传递给协程构建器?

php - 在php中调用定义为对象变量的匿名函数

asp.net-mvc-3 - 如何从匿名类值绑定(bind)下拉列表

javascript - 从 Json 字符串中删除属性名称