什么是作用域和作用域链?——Javascript基础学习笔记

简单介绍JS中全局作用域和函数作用域,着重在于理解作用域链(scope chain)的执行机制

作用域(Scope)

  • 全局作用域(Global scope)

    全局作用域内定义的变量和函数在任何地方都可用。

  • 函数作用域(Function scope)

    函数作用域内定义的变量和函数仅在函数体内可用。


作用域链(Scope Chain)

  • 执行上下文(Execution Context)

    JS中,所有代码都在执行上下文/执行环境中运行,每次函数的调用都会创建一个新的执行环境。执行环境中包括自身的变量环境、一个this对象以及对其外层执行环境的引用。
    全局作用域不存在外层执行环境。

  • 作用域链的运行方式

    • 被引用(未定义)的变量将首先在其自身执行环境中搜索。

    • 如果没有找到,将搜索外部执行环境。

    • 如果还是没有找到,将搜索再上一层的执行环境,直到全局作用域为止。

    • 如果在全局作用域中还是没有找到,则该变量为undefined

示例


    // Even though 'B' is called within 'A', 
    // 'B' is defined within **Global**, 
    // therefore, the **Outer Reference** of 'B' is **Global** instead of 'A'

    

你可能感兴趣的:(JavaScript,javascript)