javascript---作用域

Posted 游鱼与渔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript---作用域相关的知识,希望对你有一定的参考价值。

  作用域

    什么是作用域?

      作用域就是你的代码在运行时,各个变量、函数和对象的可访问性。换句话说,作用域决定了你的代码里的变量能否被外界引用。

    为什么需要作用域?

      最小访问原则。作用域为代码提供了一个安全层级,不同作用域互不干扰。有利于追踪bug而且避免了同名变量冲突。

    作用域有哪些?

      全局作用域 (window)

      局部作用域(函数)

      块级作用域(ES6 let/const关键字)

  js中的作用域指的是词法作用域。一段js代码执行需要经过2个阶段:

        1.编译阶段--编译器会编译你的代码(词法化),这个时候,你的作用域就已经确定了的

        2.执行阶段--js引擎开始执行你的代码

  js的作用域跟执行上下文经常被混淆。如何区分呢?

        作用域是在编译阶段就已经确定了的, 而执行上下文是在函数被执行的时候创建的(执行上下文以后会讲到,注意:全局作用域可以看成一个特殊的‘执行上下文’,先把window理解为一个函数吧)

以上是关于javascript---作用域的主要内容,如果未能解决你的问题,请参考以下文章

闭包理解

eval作用域

对作用域和作用域链的理解

JavaScript中高级进阶推荐一个JavaScript进阶深入系列专题系列(涉及原型作用域执行上下文变量对象this闭包按值传递callapplybindnew继承等

在chrome开发者工具中观察函数调用栈作用域链与闭包

JavaScript 开发进阶:理解 JavaScript 作用域和作用域链