如何深入理解JavaScript中的作用域与作用域链原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3383个文字,预计阅读时间需要14分钟。
前言:JavaScript 中有一个被称为作用域(Scope)的特性。
解释:作用域是变量、函数等标识符可以访问的范围。简单来说,就是定义了变量和函数在代码中哪些地方可见。
作用域链:全局作用域中的变量和函数可以访问,而在局部作用域中定义的变量和函数只能在其作用域内访问。如果需要访问外部作用域的变量,就需要通过作用域链向上查找。
前言
JavaScript 中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获!
作用域(Scope)
1. 什么是作用域
作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。可能这两句话并不好理解,我们先来看个例子:
function outFun2() { var inVariable = "内层变量2"; } outFun2();//要先执行这个函数,否则根本不知道里面是啥 console.log(inVariable); // Uncaught ReferenceError: inVariable is not defined
从上面的例子可以体会到作用域的概念,变量 inVariable 在全局作用域没有声明,所以在全局作用域下取值会报错。我们可以这样理解:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。
ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。
本文共计3383个文字,预计阅读时间需要14分钟。
前言:JavaScript 中有一个被称为作用域(Scope)的特性。
解释:作用域是变量、函数等标识符可以访问的范围。简单来说,就是定义了变量和函数在代码中哪些地方可见。
作用域链:全局作用域中的变量和函数可以访问,而在局部作用域中定义的变量和函数只能在其作用域内访问。如果需要访问外部作用域的变量,就需要通过作用域链向上查找。
前言
JavaScript 中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获!
作用域(Scope)
1. 什么是作用域
作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。可能这两句话并不好理解,我们先来看个例子:
function outFun2() { var inVariable = "内层变量2"; } outFun2();//要先执行这个函数,否则根本不知道里面是啥 console.log(inVariable); // Uncaught ReferenceError: inVariable is not defined
从上面的例子可以体会到作用域的概念,变量 inVariable 在全局作用域没有声明,所以在全局作用域下取值会报错。我们可以这样理解:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。
ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。

