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这样

放在函数体内也就不会直接生效了,而是需要赋值给变量之后才可以使用。

博主是初学者,可能理解上会有错误,若有错误,求指正,谢谢

猜你喜欢

转载自www.cnblogs.com/raonet/p/10348487.html