JavaScript匿名函数有效语法防止全局范围污染?

JavaScript匿名函数有效语法防止全局范围污染?,javascript,Javascript,我发现了这两个代码,不理解它们之间的区别(如果有的话) 你们能解释一下防止全球范围污染的代码之间的区别吗 第一: (function() { var x = 1; // thousand of lines here }(window)); 第二: (function() { var x = 1; // thousand of lines here })(window); 这个问题可能很琐碎,但我不明白区别是什么()-您能解释一下吗?当JavaScript解析器读取行开头的函数标记时,它假定

我发现了这两个代码,不理解它们之间的区别(如果有的话)

你们能解释一下防止全球范围污染的代码之间的区别吗

第一:

(function() {
var x = 1;
// thousand of lines here
}(window));
第二:

(function() {
var x = 1; 
// thousand of lines here
})(window);

这个问题可能很琐碎,但我不明白区别是什么
()-您能解释一下吗?

当JavaScript解析器读取行开头的
函数
标记时,它假定它是函数声明,即

function hello() {
    return "world";
}
如果之后没有看到名称,则是语法错误。括号使上下文成为表达式而不是语句/声明,这意味着需要函数文本

有趣的事实:当然,你不需要括号来强制表达式上下文。一元运算符也会起作用,例如

!function() {
    var x = 1;
}();


哦,你已经改变了问题。新的答案是:它们都完全相同,有点像
5+(4*3)
(5+4*3)
,但更不重要的是,因为它们的可读性差不多。

当JavaScript解析器在行的开头读取
函数
标记时,它假定它是一个函数声明,即

function hello() {
    return "world";
}
如果之后没有看到名称,则是语法错误。括号使上下文成为表达式而不是语句/声明,这意味着需要函数文本

有趣的事实:当然,你不需要括号来强制表达式上下文。一元运算符也会起作用,例如

!function() {
    var x = 1;
}();


哦,你已经改变了问题。新的答案是:它们都完全相同,有点像
5+(4*3)
(5+4*3)
,但更不重要的是,它们的可读性差不多。

如果这确实是代码的样子,那么区别在于第一个不是语法错误,但是第二个可能是重复的。我忘了再添加一些()-现在检查一下。这是重复的(如果你不知道要搜索的正确术语,有时很难找到它们),另一个答案确实值得一读。他在里面放了很多好东西。问题不是如何做匿名函数或执行,而是为什么这种语法有效?如果这确实是代码的样子,那么区别在于第一个不是语法错误,但第二个是。可能是重复的我忘了添加更多()-现在检查这个。这是一个副本(如果你不知道要搜索的正确术语,有时很难找到它们),另一个答案确实值得一读。他在里面放了很多好东西。问题不在于如何做匿名函数或执行,而在于为什么这种语法会起作用?现在我明白了()类似于运算符!这两种力量的评估-谢谢-这个问题让我很恼火-它太琐碎了:)现在我明白了()类似于运算符!两种力量的评估-谢谢-这个问题让我很恼火-它太微不足道了:)