我找到了这样的两个代码,但不明白它们之间的区别(如果存在的话)。
你能解释一下防止全局范围污染的代码有什么区别吗?
首先:
(function() {
var x = 1;
// thousand of lines here
}(window));
第二个:
(function() {
var x = 1;
// thousand of lines here
})(window);
问题可能很简单,但我不明白 ();
的区别 - 你能解释一下吗?
最佳答案
当 JavaScript 解析器在行的开头读取一个 function
标记时,它假定它是一个函数声明,即
function hello() {
return "world";
}
如果后面没有看到名字,那就是语法错误。括号使上下文成为表达式而不是语句/声明,这意味着需要函数文字。
有趣的事实:当然,您不需要括号来强制表达式上下文。一元运算符也可以工作,例如
!function() {
var x = 1;
}();
哦,你已经改变了问题。新的答案是:它们完全相同,有点像 5 + (4 * 3)
与 (5 + 4 * 3)
,除了更不重要因为它们或多或少具有相同的可读性。
关于JavaScript 匿名函数有效语法防止全局范围污染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100615/