这是我的代码:
var badget = function () {
var privetVar = 23;
var privetFunc = function (a) {
return privetVar + a;
}
return {
publicFunc: function (b) {
console.log(privetFunc (b));
}
}
}();
效果很好;我可以使用publicFunc()
访问badget.publicFunc()
,privetVar
可以访问privetFunc()
和var badget = (function() {
var privetVar = 23;
var privetFunc = function(a) {
return privetVar + a;
}
return {
publicFunc: function(b) {
console.log(privetFunc(b));
}
}
})();
,因为"关闭"。
然而,有人告诉我,我必须使用这样的括号:
{{1}}
第二个例子被认为是一个更好的语法吗?
答案 0 :(得分:3)
不,在此示例中不需要括号。通常人们不会使用IIFE的返回值,因此必须使用括号来区分函数表达式< / em>来自函数语句。
由于你的第一个例子中的函数声明已经是赋值表达式的一部分,它已经是一个函数表达式,所以括号不是必需的。
var badget = function () {
...
}();
(function () {
...
})();
(function () {
...
}());
var badget = (function () {
...
})();
var badget = (function () {
...
}());
function () {
...
}();