[摘要]本篇文章给大家带来的内容是关于javascript中作用域链的详细介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。概述JavaScript 中的可执行代码有其执行上下文...
本篇文章给大家带来的内容是关于javascript中作用域链的详细介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
概述
JavaScript 中的可执行代码有其执行上下文,在执行上下文中,有三个重要的元素:
- 变量对象(variable object) 
- 作用域链(scope chain) 
- this 
其中,变量对象是上下文中变量声明和函数声明的集合。  
this 表示是变量对象被谁所持有,this 总是指向当前的上下文。
而作用域链则控制着变量与函数的可见性和生命周期。
一、作用域链
JavaScript 引擎在查找变量标识符对应的绑定(binding)时,会从最内部的作用域向外冒泡开始查找,如果内部作用域没找到,就在父作用域查找,直到找到第一个匹配的标识符时就停止,这就是 JS 中的作用域链。
var name = "global";
function func1() {
    var name = "outter";
    function func2() {
        var name = "inner";
        console.log(name);
    }
    func2();
}
func1() // "inner"