立即执行函数和闭包没有什么关系,只是两者会经常结合在一起使用而已,但两者有本质的不同。

闭包和立即执行函数都可减少全局变量的使用

立即执行函数在函数声明后立即执行,一般般只调用一次,可以减少内存的占用

闭包是函数调用函数,主要是让外部函数可以访问内部函数的作用域。减少了全局变量的使用,保证了内部变量的安全。但因为被占用的内部变量不能销毁,会占用内存,增加内存消耗,使用不当会造成内存泄露。

var let const

var 全局变量,重复定义同一个变量名不会报错。存在变量前置
let 局部变量,不可重复定义同一个变量名。
const 常量,但定义一个数组或对象可以修改,因为他们是引用类型。

for(var i=0;i<5;i++){

console.log('i=', i) // 0 1 2 3 4

}
console.log(i) // 5

for(let i=0;i<5;i++){

console.log('i=', i) // 0 1 2 3 4

}
console.log(i) // i is not defined


云胡不喜
73 声望11 粉丝

前端的忠实粉丝