javaScript 立即执行函数学习笔记
立即执行函数:
即执行函数(Immediate Functions),立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行
立即执行函数(immediate function)术语不是在ECMAScript标准中定义的,但它很短有助于描述和讨论模式;
这种模式有一些几部分组成:
使用函数表达式定义一个函数(函数声明不能起作用)
在结尾加上一对括号,让函数立即被执行
将整个函数包裹在一对括号中(只有在你不将函数赋值给一个变量的时候才需要)(来自百度搜索)
立即执行函数给了一个沙箱装着函数作用域,且在执行后立即销毁,访问不到他的scope,从而不用当心它会污染全局变量
我们可以写一个例子,用前几天写的递归阶乘算法来验证:
1 <script> 2 var a = prompt("请输入值"); 3 var num = (function mul(a) { 4 if (a == 1) { 5 return 1; 6 } 7 return a * mul(a - 1); 8 }(a)) 9 document.write(num); 10 </script>
正常情况执行这段代码之后,是可以查询到mul函数的
而使用了立即执行函数之后,查询结果失败
这是由立即执行函数性质决定的,这也让mul函数与其内容变量不会污染到全局变量和方法
所以写立即执行函数一般也省略方法名。像这样
var num = (function () { }())
但要注意的是,在写成立即执行函数时,这个函数已经算是表达式了,就如a+b这样
放在函数体内也就不会直接生效了,而是需要赋值给变量之后才可以使用。
博主是初学者,可能理解上会有错误,若有错误,求指正,谢谢