为什么要有js立即执行函数,存在的意义是什么

JavaScript010

为什么要有js立即执行函数,存在的意义是什么,第1张

立即执行函数可以避免函数内的变量暴露在全局环境下,避免全局变量的污染。

这种模式是非常有用的,因为它为你初始化代码提供了一个作用域的沙箱;

考虑一下下面这种常见的场景:

你的代码在页面代码加载完成之后,不得不执行一些设置工作,比如附加时间处理器,创建对象等等,

所有的这些工作只需要执行一次,所以没有理由创建一个可复用的命名的函数,

但这些代码也需要一些临时的变量,但初始化过程结束后,就再也不会被用到了,

所以将这些变量作为全局变量不是个好主意,所以我们需要立即执行函数——去将我们所有的代码包裹在它的局部作用域中,不会让任何变量泄露成全局变量;

js分为全局作用域和函数作用域,全局作用域在函数内部可以访问到,但是函数内部的变量,外部无法访问到

var name = 'zhangsan'

(function(){

console.log(name)//这里因为变量提升,name === undefined,所以结果是undefined

var name = 'lisi'

console.log(name)//这里执行的是 name = lisi ,所以自然就是lisi了

})()

console.log(name)//函数的作用域,在全局中无法访问,这里结果是张三

var name = 'zhangsan'

(function(){

console.log(name)//函数内部没有name 这个变量,所以像全局查找,全局有一个name,那么结果就是zhangsan

name = 'lisi'

console.log(name)//同理,这里结果是lisi,因为name被赋值成lisi

})()

console.log(name)//lisi

我这就不卖关子了,输出的结果分别是:2、4、1、1、2、3、3

不知你答对了吗?

下面进入重点,我们进行分析

要想计算下面这几项,我们需要先了解 js 运算符的执行顺序,可以参考这个网址: 运算符优先级