关于JavaScript作用域的一切

原文: https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/
译者:dreamapple(https://github.com/dreamapplehappy/hacking-with-javascript/blob/master/translate/everything-you-wanted-to-know-about-javascript-scope.md)

JavaScript中有许多章节是关于scope的,但是对于初学者来说(甚至是一些有经验的JavaScript开发者),这些有关作用域的章节既不直接也不容易理解.

这篇文章的目的就是为了帮助那些想更深一步学习了解JavaScript作用域的开发者,尤其是当他们听到一些关于作用域的单词的时候, 好比:作用域(scope),闭包(closure),this,命名空间(namespace),函数作用域(function scope),全局作用域(global scope),词法作用域(lexical),公有变量(public scope),私有变量(private scope).

  • 希望通过这篇文章你可以知道下面这些问题的答案:

  • 什么是作用域?
  • 什么是全局(局部)作用域?
  • 什么是命名空间,它和作用域有什么不同?
  • this关键字是什么,作用于又是怎么影响它的?
  • 什么是函数/词法作用域?
  • 什么是闭包?
  • 什么是共有/私有作用域?
  • 我怎么样才能够理解/创建/实践上面所有的情况
  • 什么是作用域?

    在JavaScript中,作用域指的是你代码的当前上下文环境.作用域可以被全局或者局部地定义.理解JavaScript的作用域是让你写出稳健的代码并且成为一个更好的开发者的关键.

    你将会理解那些变量或者函数是可以访问的,并且有能力去改变你代码的作用域进而有能力去写出运行速度更快,更容易维护,当然调试也非常容易的代码.

    别把作用域想的太复杂,那么我们现在是在A作用域还是B作用域?

    什么是全局作用域

    当你在开始书写JavaScript代码的时候,你所处的作用域就是我们所说的全局作用域.如果我们定义了一个变量,那么它就是被全局定义的:

    1
    2
    3
    // global scope
    var name = 'Todd';
       
虚拟主机
《JavaScript权威指南(第6版)(中文版)》PDF
《JavaScript基础教程(第8版)》PDF
《Javascript语言精粹》PDF
【深入浅出Node.js】PDF
广告也精彩