如何深入理解JavaScript中复杂的作用域规则及其在函数和闭包中的应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1365个文字,预计阅读时间需要6分钟。
作用域通常指在特定时间范围内,变量或函数存在的代码区域。缺少对作用域的理解可能导致测试时出现遗漏。作用域的概念关乎我们代码中可以访问哪些特定的函数或变量。
作用域通常是指在指定的时间内,变量存在于一段代码中。缺乏对作用域的理解可能会导致令人沮丧的调试体验。作用域的概念是关于我们的代码中可以访问到哪些确定的函数或变量,代码的上下文和执行环境。
在 JavaScript 中,有两种类型的作用域:全局和局部作用域。
全局作用域
第一种作用域是全局作用域。它很容易定义。如果一个变量或函数是_全局的_,那么在程序中的任何地方都可以访问到它们。在浏览器中,全局作用域是 window对象。如果在函数外面声明一个变量,那么这个变量就存在全局对象中。例如:
var x = 9;
一旦该变量被定义,则可以被引用为 window.x,因为它存在于全局对象中,我们可以简单的引用它为 x。
局部作用域
JavaScript 也可以在每个函数体中创建局部作用域。例如:
function myFunc() { var x = 5; } myFunc(); console.log( x ); // ReferenceError: x is not defined
由于 x 是在 myFunc() 中初始化,所以它只能在 myFunc() 中被访问,如果我们试图在 myFunc() 外面访问 x,则会得到一个引用错误。
注意
如果你忘记使用 var 关键字声明变量,那么这个变量会自动变成全局变量。
本文共计1365个文字,预计阅读时间需要6分钟。
作用域通常指在特定时间范围内,变量或函数存在的代码区域。缺少对作用域的理解可能导致测试时出现遗漏。作用域的概念关乎我们代码中可以访问哪些特定的函数或变量。
作用域通常是指在指定的时间内,变量存在于一段代码中。缺乏对作用域的理解可能会导致令人沮丧的调试体验。作用域的概念是关于我们的代码中可以访问到哪些确定的函数或变量,代码的上下文和执行环境。
在 JavaScript 中,有两种类型的作用域:全局和局部作用域。
全局作用域
第一种作用域是全局作用域。它很容易定义。如果一个变量或函数是_全局的_,那么在程序中的任何地方都可以访问到它们。在浏览器中,全局作用域是 window对象。如果在函数外面声明一个变量,那么这个变量就存在全局对象中。例如:
var x = 9;
一旦该变量被定义,则可以被引用为 window.x,因为它存在于全局对象中,我们可以简单的引用它为 x。
局部作用域
JavaScript 也可以在每个函数体中创建局部作用域。例如:
function myFunc() { var x = 5; } myFunc(); console.log( x ); // ReferenceError: x is not defined
由于 x 是在 myFunc() 中初始化,所以它只能在 myFunc() 中被访问,如果我们试图在 myFunc() 外面访问 x,则会得到一个引用错误。
注意
如果你忘记使用 var 关键字声明变量,那么这个变量会自动变成全局变量。

