返回
词法作用域与作用域链:深入浅出,带你领略JavaScript独到之处
前端
2023-11-07 04:02:14
揭开词法作用域与作用域链的神秘面纱:通俗且透彻的讲解 #
词法作用域,也被称为静态作用域,是指变量的作用域在编译时就确定了。这意味着变量的作用域由它在代码中的位置决定,而不会受到程序执行期间的动态变化的影响。
词法作用域的范围可以是全局作用域、函数作用域或块作用域。全局作用域是整个程序可以访问的变量的作用域,函数作用域是函数内部变量的作用域,块作用域是代码块内部变量的作用域。
作用域链是作用域的层次结构,它决定了变量在程序执行期间如何被查找。作用域链是从当前执行上下文开始,向上一直到全局作用域的路径。当变量在当前执行上下文中找不到时,JavaScript会沿着作用域链向上查找,直到找到该变量或到达全局作用域。
词法作用域和作用域链是JavaScript中两个非常重要的概念,它们决定了变量在程序中的访问权限。理解这两个概念对于编写健壮、可维护的JavaScript代码非常重要。
词法作用域示例
// 全局变量
var globalVariable = "Global Variable";
// 函数作用域
function myFunction() {
// 函数变量
var functionVariable = "Function Variable";
// 块作用域
if (true) {
// 块变量
var blockVariable = "Block Variable";
}
console.log(globalVariable); // "Global Variable"
console.log(functionVariable); // "Function Variable"
console.log(blockVariable); // ReferenceError: blockVariable is not defined
}
myFunction();
在这个示例中,全局变量globalVariable可以在程序的任何位置访问,函数变量functionVariable只能在函数myFunction内部访问,块变量blockVariable只能在代码块内部访问。
作用域链示例
// 全局变量
var globalVariable = "Global Variable";
// 函数作用域
function myFunction() {
// 函数变量
var functionVariable = "Function Variable";
// 块作用域
if (true) {
// 块变量
var blockVariable = "Block Variable";
console.log(globalVariable); // "Global Variable"
console.log(functionVariable); // "Function Variable"
console.log(blockVariable); // "Block Variable"
}
}
myFunction();
console.log(globalVariable); // "Global Variable"
console.log(functionVariable); // ReferenceError: functionVariable is not defined
console.log(blockVariable); // ReferenceError: blockVariable is not defined
在这个示例中,在代码块内部,作用域链是从当前执行上下文(代码块)开始,向上一直到全局作用域的路径。当变量blockVariable在当前执行上下文中找不到时,JavaScript会沿着作用域链向上查找,直到找到该变量或到达全局作用域。
结语
词法作用域和作用域链是JavaScript中两个非常重要的概念,它们决定了变量在程序中的访问权限。理解这两个概念对于编写健壮、可维护的JavaScript代码非常重要。

扫码关注微信公众号
{ font-size: 30px; font-weight: bold; margin-bottom: 20px; } #description { font-size: 16px; margin-bottom: 20px; } #keywords { font-size: 14px; } .block { margin-bottom: 20px; } </style> <div class="container"> 浏览器渲染主线程背后的推动力:事件循环
Visual Magic: OpenCV.js Opens the Door to Enriching Music Scores with QR Codes

极简3D绘图之初识Canvas
地板美容 - 减少白色砖块的艺术

一砖一瓦,搭建脚手架:零基础上手指南
