立即执行函数
写法
//第一种,较为常用
(function(){
})()
//第二种,w3c的建议
(function(){
}() )
注意
对于非匿名函数的立即执行函数有一个特殊的案例:
var foo = 1
(function foo() {
foo = 10
console.log(foo)
}()) // -> ƒ foo() { foo = 10 ; console.log(foo) }
解释器在遇到非匿名的立即执行函数时,会创建一个辅助的特定对象,然后将函数名称作为这个对象的属性;因此函数内部才能访问到foo;但是foo是只读的;因此对其赋值并不生效;因此答应结果为这个函数;并且外部值也并不改变