(十)立即执行函数

立即执行函数

写法
//第一种,较为常用
(function(){ 

})()  

//第二种,w3c的建议
(function(){

}() ) 
注意

对于非匿名函数的立即执行函数有一个特殊的案例:

var foo = 1
(function foo() {
    foo = 10
    console.log(foo)
}()) // -> ƒ foo() { foo = 10 ; console.log(foo) }

解释器在遇到非匿名的立即执行函数时,会创建一个辅助的特定对象,然后将函数名称作为这个对象的属性;因此函数内部才能访问到foo;但是foo是只读的;因此对其赋值并不生效;因此答应结果为这个函数;并且外部值也并不改变

原文地址:https://www.cnblogs.com/smileyqp/p/12675329.html