自执行匿名函数剖析
在很多js代码中我们常常会看见这样一种写法:
1 | (function( window, undefined ) { |
这种写法我们称之为自执行匿名函数(self-executing anonymous function)。
正如它的名字一样,它是自己执行自己的,前一个括号是一个匿名函数,后一个括号代表立即执行。
一、函数和函数表达式的区别
语法
1 | function keqing(){ //函数 |
函数的函数声明有一个重要特征 —— 函数声明提升
1 | keqing(); //Hi~ |
1 | keqing(); // Uncaught TypeError: keqing is not a function |
回到我们的自执行匿名函数
1 | function(){ |
二、自执行匿名函数剖析
回到我们最开始的栗子
1 | (function( window, undefined ) { |
1.自执行匿名函数写法的好处:防止变量名冲突
2.自执行匿名函数的其他多种写法:
1 | ( function() {}() ); |
3.为何要传入window?
这样传入window可将其从全局变量变为局部变量,在函数作用域内可以直接访问到window,就不用将作用域链退回到顶层作用域了。
在压缩代码时,可以对window进行优化。
4.为何要增加参数undefined?
由于undefined在一些情况下有可能会被重写,为确保在自执行匿名函数里的undefined是”真的undefined”,就需要增加参数undefined。