立即执行函数顾名思义就是声明一个函数,并立即执行它。而且执行完就释放控件,找不到引用
立即执行函数写法
(function (形参){ // 写法1(w3c建议) xxx }(实参)) (function (形参){ // 写法2 xxx })(实参)
但是个人更习惯用第二种写法,所以这看个人习惯了。
注意!! 只有表达式才能被执行符号()执行,且被执行后忽略函数名
function a(){}() //报错,因为这是函数申明 var test = function a(){}() //可以执行,这是函数表达式,注意被执行后test为undefined 类似于立即执行函数
立即执行函数也是有返回值,如下
//正常情况 (function (a, b, c) { var d = a + b + c console.log(d) }(1, 2, 3)) //有返回值情况 var num = (function (a, b, c) { var d = a + b + c return d }(1, 2, 3)) console.log(num) //6
曾经看过这样一道题目,如下
//前面说了,理论上该情况上会报错 function a() { }() //但是如果括号里加参数就不会报错 function a(a, b, c) { console.log(a + b + c) }(1, 2, 3) //不会报错 也不会执行a函数 //因为如果括号加参数,系统会认为这不是执行符号,这是后会当成两句代码 函数声明和(1, 2, 3) function a(a, b, c) { console.log(a + b +c) } (1, 2, 3)
end !!!