Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不同的生活方式?_Javascript_Iife - Fatal编程技术网

Javascript 不同的生活方式?

Javascript 不同的生活方式?,javascript,iife,Javascript,Iife,两者之间有什么区别吗 (function (){alert('')} ()) vs 这两种方法都有效,但我应该在什么时候使用它们?包装括号仅用于强制解析器将构造解析为函数表达式,而不是函数声明。这是必要的,因为调用函数声明是非法的,但调用函数表达式是合法的 为此,调用括号的位置无关紧要。如何强制将函数解析为表达式也无关紧要。以下措施也同样有效: !function () { alert('') }(); ~function () { alert('') }(); //

两者之间有什么区别吗

(function (){alert('')}    ())
vs


这两种方法都有效,但我应该在什么时候使用它们?

包装括号仅用于强制解析器将构造解析为函数表达式,而不是函数声明。这是必要的,因为调用函数声明是非法的,但调用函数表达式是合法的

为此,调用括号的位置无关紧要。如何强制将函数解析为表达式也无关紧要。以下措施也同样有效:

!function () {
    alert('')
}();

~function () {
    alert('')
}();

// Any unary operator will work

如果决定使用换行括号(分组运算符),请记住这一点。这只是一种风格上的选择,如果你愿意,你可以忽略它。

它们都做同样的事情

JSLint建议您使用第一个,在分组括号中包含执行括号,这样所有内容都可以整齐地分组在一起

值得一提的是,我个人认为您的第二个示例更加清晰,因为在扫描代码时,您可以看到执行从函数表达式中脱颖而出


虽然不是复制品,但覆盖了相似的地面,因此可能值得一看。

不,这只是一种风格选择。用你喜欢的。但请注意,@RoyiNamir,偶数运算符也能工作:-)@Barmaley.exe我要试试:-)是的,任何一元运算符都能工作。甚至
无效
删除
类型
。。。他们只是不太可读!
!function () {
    alert('')
}();

~function () {
    alert('')
}();

// Any unary operator will work