我知道这里和其他地方有很多关于自我执行功能的帖子,但在阅读帖子后我仍然有一些问题。
为什么我会为变量分配一个自执行函数?如果似乎他们无论如何都会执行自己。
var myFunc=(function() { console.log('Hello World'); })();
我读了很多,使用自执行函数的原因是保持变量私有。如果我有一个非自动执行的函数,那么我在该函数中定义的所有内容无论如何都会是私有的?!
(function() { var name="my Name" console.log(name); })(); vs. function() { var name="my Name" console.log(name); }; //its the same
所以我不太明白自执行函数是如何保持本地范围的(因为你可以使用非自执行函数来做到这一点)所以我看到的唯一原因是当你想自动执行时使用它们,例如在页面加载时。
谢谢!
还有一个问题:
var test=(function myFunc(){
var name="Hello World"
return {
test1: function(){
return name;
},
test2:function(){
return name+"1"
}
}
})()
test.test1()
vs
var test=function myFunc(){
var name="Hello World"
return {
test1: function(){
return name;
},
test2:function(){
return name+"1"
}
}
}
test.test1()
--> 这里到底发生了什么,因为 IIFE 我可以实际执行 test.test1() 而不是使用常规函数?