自调用这个匿名函数
这样解释器会报错
为什么呢? 原因可以看一个普通js函数的调用
这是一个函数声明,如果在这么一个声明后直接加上括号调用,解析器不能理解而会报错:
而a函数申明时候,调用就可以直接加 ()
这里可以看出无论是命名函数还是匿名函数,都是函数申明,而直接对匿名函数加 () 之后,解释器就不能理解而报错了
要自调用匿名函数,就需要把匿名函数声明语句变成一个表达式
/* 第一种,赋值给变量然后通过变量调用 */var fun = function(){
}
fun() //调用
/* 第二种就是立即执行,就是在匿名函数后边添加一个括号 */
(function(){
}())//结构一
function(){
}()//结构二
var fun2 = function(){
}()//结构三
方法一适合在任意位置调用,方法二适用于闭包