Javascript菜鸟在这里。在阅读模块模式时。我注意到这个匿名函数在函数范围内有括号。我以前没用过这个。我想更好地理解它。
// first example
(function(){
//this is IIFE I always use to avoid globle var. I think the simple form of this is F();
})();
// second example
(function () {
//However, what is this concept? what's the formal name of this function?
}());
这两者之间有哪些主要区别?我如何理解第二个例子?
答案 0 :(得分:2)
通常你不需要包裹parens,如果你删除那些你会看到它是相同的:
function(){}()
function(){}()
上面,那已经是IIFE了。
但是如果该函数不用作表达式,例如在赋值中,那么JavaScript会认为它是一个函数声明。要消除歧义并强制表达式,您可以执行各种操作,例如添加括号:
// Same thing
(function(){}())
(function(){})()
或使用一元运算符:
!function(){}()
+function(){}()
void function(){}()