首页 > web前端 > js教程 > 揭开JavaScript变量范围和提升

揭开JavaScript变量范围和提升

Joseph Gordon-Levitt
发布: 2025-02-10 09:35:11
原创
463 人浏览过

了解JavaScript变量范围和提升:综合指南

>

Demystifying JavaScript Variable Scope and Hoisting

编程的基石

变量范围决定了一个程序中变量的可访问性。 本指南深入研究了JavaScript的范围范围机制,涵盖了可变声明方法,全局与本地范围以及通常被认为是吊装的概念。掌握这些概念对于构建强大且无错误的JavaScript应用程序至关重要。

>

密钥概念:

    JavaScript采用两种主要范围类型:全局和本地。本地范围进一步细分为函数范围(
  • )和块范围(forvar>和let)。 const
  • >声明将其悬挂在其函数的顶部,而
  • var>则将其悬挂在其块的顶部,但保持不规则,创建了“暂时的死区”。 在整个程序中可访问的全球变量通常是由于潜在的冲突和意外覆盖而劝阻的。 let函数声明已完全提起,与函数表达式不同,可以在其定义之前进行呼叫,而函数表达式遵守标准提升规则。const
  • 适当理解和应用JavaScript的范围和提升规则,可以防止常见可变相关的错误并增强代码可靠性。
  • >变量范围详细:
  • >
> JavaScript中的变量范围由其声明位置确定,并在程序中定义其可访问性。 存在三种方法可变性声明:旧版

关键字和现代关键字。 而

是唯一的选项pre-es6,

>和var提供更严格的规则,提高代码可靠性。let JavaScript const>)和块范围(对于var>和let)中。 函数范围是块范围的一种专业形式。const

全局范围:varlet 脚本中的最外部范围是全局范围。这里声明的变量已成为全局,可以从程序中的任何地方访问:const

>虽然方便,但由于潜在的冲突和覆盖,全局变量通常会劝阻。

本地范围:

>在一个块中声明的变量(例如,
// Global Scope
const name = "Monique";

function sayHi() {
  console.log(`Hi ${name}`);
}

sayHi(); // Hi Monique
登录后复制
登录后复制

,函数)是该块的本地。 函数定义了用

>,

声明的变量范围。 一个代码块仅定义>的范围;

限于功能范围。

letconst介绍块范围,为每个块创建一个新的本地范围。独立的块还定义了范围:

// Global Scope
const name = "Monique";

function sayHi() {
  console.log(`Hi ${name}`);
}

sayHi(); // Hi Monique
登录后复制
登录后复制

嵌套的示波器是可能的,内部范围从外部范围访问变量,而不是vice-vice-a。

范围的视觉隐喻:> 想象世界:国家有边界(范围),国家内的城市有自己的范围,等等。 全球范围就像世界上的海洋一样,涵盖了一切。 这个类比说明了范围的工作方式:搜索变量始于最内向的范围,并向外进行直到发现或发生错误。此查找称为词汇(静态)范围。

>

升起:

> 在编译过程中,JavaScript的“提升”机制将变量和函数声明移至其范围的顶部。 但是,只有声明被提升。任务保留到位。 考虑一下:

输出为

,因为
{
  // standalone block scope
}
登录后复制
被声明但尚未分配值。 引擎将其解释为:

undefined state

console.log(state); // undefined
var state = "ready";
登录后复制
>变量也被吊起但未初始化,在声明之前会导致“时间死区”(TDZ)。 在TDZ中访问它们,抛出

let> constReferenceError函数和提升:

函数声明已完全提起,允许在其定义之前进行呼叫:> 但是,

函数表达式遵循标准提升规则(声明吊装,保留保留)。 类的行为与

变量类似。

>
var state; // hoisted
console.log(state);
state = "ready";
登录后复制

关键差异和最佳实践:let

>

:函数 - 划分。

  • var:block-scoped。
  • >
  • 所有声明都悬挂了。let> const函数在变量之前提起。
  • 函数声明优先于可变声明,但不优先。
  • >常见问题:
    • >什么是变量范围?可访问变量的区域。
    • 全局范围与本地范围?本地:限制为块或功能。
    • 块范围?
    • 由块定义的本地范围(使用>和)。let const
    • 如何起作用?
    • 声明与起始化?
    • >用
    • 提起但未初始化; TDZ适用。
    • 通过了解JavaScript的范围和提升,开发人员可以编写更清洁,更容易预测且容易发生错误的代码。 请记住要利用块范围(let)来获得更好的代码组织和可维护性。const>

以上是揭开JavaScript变量范围和提升的详细内容。更多信息请关注PHP中文网其他相关文章!

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