首页 > web前端 > js教程 > 理解 JavaScript 中的作用域

理解 JavaScript 中的作用域

Mary-Kate Olsen
发布: 2025-01-14 06:58:43
原创
691 人浏览过

Understanding Scopes in JavaScript

Javascript 中的作用域和闭包概念是掌握该语言所需的基础模块。仅举几例,他们是构造函数、工厂函数和 IIFE 背后的无名英雄。

本文旨在使用实际示例解释 JavaScript 中的作用域。在后续文章中,我们将讨论 JavaScript 闭包。

作用域和词法作用域

作用域只是决定变量在 JavaScript 程序中的可用位置。基本上,范围有两种类型:

  1. 全球范围
  2. 本地范围

全球范围

在全局范围内,变量在任何地方都可用,并且可以在程序中的任何地方使用。从技术上讲,当变量未在任何函数或 { 大括号 } 中声明时,就称它们位于全局范围内。

本地范围

另一方面,对于局部作用域,变量仅在特定上下文中可用,并且只能在该上下文中使用。从技术上讲,当在函数或 { 大括号 } 中声明变量时,它们被称为局部作用域。

let x = 3; // x (global scoped)

function addXY () {
    let y = 5; // y (locally scoped)
    return  x + y; // returns 8 since x is available anywhere in this program
}
登录后复制

范围更广

ECMAScript 是标准化规范,定义了 JavaScript 等脚本语言的核心功能,确保跨平台的一致性和互操作性。正如国际单位制 (SI) 为米和千克等测量提供标准化框架以确保全球一致性一样,ECMAScript 为 JavaScript 等脚本语言制定了标准,确保它们在不同平台和环境中统一工作。

这个 JavaScript 标准化规范已经经历了多个版本的演变,每个版本中都添加了新功能和改进。这些版本中包括 ES6 (ECMAScript 2015),它提供了引入 let/const 的重大更新。

在 ES6 之前,JavaScript 中使用 var 关键字定义变量。使用 var,变量可以被重新定义和更新。但是,var 变量仅在函数内具有局部作用域。 ES6 通过 let/const 引入了本地作用域的扩展,以包含 { 大括号 } 内的片段。简而言之,var 变量在函数内具有局部作用域,但在其他任何地方都具有全局作用域。

let 和 const 引入了块作用域,这使得变量只能在定义它的最接近的 { 大括号 } 集合内可用。这些大括号可以是 for 循环、if-else 条件或任何其他类似 JavaScript 构造的大括号。这样的大括号也称为代码块。

示例:

function addXYZ() {
    var x = 3;
    let y = 4;
    const z = 5;
    return x + y + z; // 12
}

// These log undefined because var, let, and const variables are locally scoped within functions.
console.log(x);
console.log(y);
console.log(z);
登录后复制
let age = 10; // global variable

if (age < 18) {
    let letCandy = 2; // block-scoped variable
    console.log(`You are entitled to ${letCandy} candies`);
} else {
    var varCandy = 4; // function-scoped variable
    console.log(`You are entitled to ${varCandy} candies`);
}

console.log(age); // Logs 10, as age is globally scoped
console.log(letCandy); // Throws ReferenceError, as letCandy is block-scoped
console.log(varCandy); // Logs 4, as varCandy is globally scoped outside of functions
登录后复制

在后续文章中,我们将讨论词法范围和闭包。感谢您的阅读。

以上是理解 JavaScript 中的作用域的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板