一、JavaScript 的作用域的理解。什么是作用域链?
在JavaScript中有两种作用域类型
1.局部作用域:只能在函数内部访问它们
2.全局作用域:网页的所有脚本和函数都能访问它
JavaScript 拥有函数作用域:每个函数创建一个新的作用域。
作用域决定了这些变量的可访问性(可见性)。
函数内部定义的变量从函数外部是不可访问的(不可见的)。
作用域链:
当查找变量的时候,会先从当前上下文的变量对象中查找,
如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。
这样由多个执行上下文的变量对象构成的链表就叫做作用域链
二、对闭包的理解?
1.什么是闭包?
函数嵌套函数,被嵌套的函数称为闭包函数
2.闭包的作用?
可以在函数外部访问函数内部局部变量,该变量不会随着函数调用完毕而销毁,提高了局部变量的生命周期
3.闭包怎么实现?
在父函数定义的局部变量,在子函数中操作,将子函数作为父函数的返回值,通过全局变量返回子函数
4.闭包的缺陷?
虽然延长了局部变量的生命周期,但是大量使用多了会造成内存泄漏