我正在研究闭包和全局作用域,我对何时使用}())和}()()感到困惑。似乎我很幸运地遇到了一个情况,无论我使用哪个都无关紧要。
(function() {
var myFunction = (function() {
var i=100;
return function() {
return i++;
}
}());
var X = myFunction();
console.log(X);
X = myFunction();
console.log(X);
})();
JS中的表达式就是这样工作的。
由于+
, -
, (
, ~
…指定表达式的开头。
!function(){}()
~function(){}()
+function(){}()
-function(){}()
(function(){})()
(function(){}())
(function () { return 1; });
不计算函数。("append" + " us")
对字符串求值
所以,在这个例子中这并不重要,因为:
var myFunction = (function() {
var i=100;
return function() {
return i++;
}
}());
求值为(function() { return i++; }
,它只返回匿名函数。
:
var myFunction = (function() {
var i=100;
return function() {
return i++;
}
})();
对括号后的myFunction求值。和. .只返回匿名函数。哇。