什么是 JavaScript 范围?

Currency Data give you currency user data. all is the active crypto currency users data.
Post Reply
tamim234
Posts: 2
Joined: Tue Dec 03, 2024 3:20 am

什么是 JavaScript 范围?

Post by tamim234 »

您是否曾经编写过无法按预期运行的 JavaScript 代码?您可能在代码的某个部分定义了一个变量或函数,但当您尝试在其他地方使用它时,它却无法正常工作。这是因为 JavaScript 有一种称为作用域的东西。

两个女人正在讨论 JavaScript 范围
立即下载:JavaScript 简介
[免费指南]

在这篇博文中,我们将探讨范围以及如何在编写代码时充分利用它。我们还将讨论一些常见的范围问题以及如何解决这些问题。让我们开始吧!

什么是 JavaScript 范围?
在JavaScript中,作用域是指代码的当前上下文。此上下文决定了您可以在哪里访问某些变量和函数。换句话说,您在 JavaScript 中定义变量或函数的位置会影响您以后可以在哪里访问它。因此,如果您在函数内定义变量,则只能在该函数内访问它。

JavaScript 范围图解释

JavaScript 中有几种作用域类型:全局作用域、局部作用域、函数作用域、块作用域和词法作用域。我们将在下文中更深入地探讨每种作用域。

全局范围
全局作用域意味着变量或函数在代码的任何地 手机号码列表 方都可用。这是 JavaScript 中变量和函数的默认作用域。

我们来看一个例子:

在上面的代码片段中,我们定义了一个名为'pet' 的变量,其值为'dog'。我们还定义了一个名为'printPet'的函数,它将'pet'的值打印到控制台。

因为我们在全局范围内定义了“pet” ,所以我们可以在“printPet”函数内部访问它。如果我们尝试在函数外部访问“pet”,它仍然可用:

但是,如果我们尝试访问不在全局范围内的变量,则会收到错误:

在上面的代码片段中,我们定义了一个名为'pet' 的变量,其值为'cat' 。我们还定义了一个名为'printPet'的函数,它将'pet'的值打印到控制台。

因为我们没有在全局范围内定义“otherPet” ,所以我们无法在“printPet” 函数之外访问它。如果我们尝试在函数内部访问它,它仍然可用:

Image

本地范围
局部作用域意味着变量或函数仅在当前代码块中可用。要创建局部作用域,我们可以使用花括号:

在上面的代码片段中,我们定义了一个名为'pet'的变量,其值为'cat'。我们还使用花括号为变量创建了局部作用域。

因为'pet'处于局部作用域中,所以我们无法在花括号外访问它。如果我们尝试在作用域内访问它,它仍然可用:

函数作用域
函数作用域与局部作用域类似,因为函数内部定义的变量和函数仅在该函数内部可用。但是,有一个关键区别:函数内部定义的变量和函数在全局作用域中不可用。

我们来看一个例子:

在上面的代码片段中,我们定义了一个名为'printPet' 的函数。我们还定义了一个名为'pet' 的变量,其值为'cat'。

因为我们在'printPet'函数中定义了'pet',所以我们只能在该函数内部访问它。如果我们尝试在函数外部访问 'pet',则会收到错误:

块范围
块作用域允许我们创建仅在代码块内可用的变量和函数。代码块是任何使用花括号的地方,例如:

要创建块作用域,我们可以使用“let” 或“const”关键字:

在上面的代码片段中,我们定义了一个名为“pet”的变量,其值为“cat”。我们还使用“let”关键字在“if”语句中为变量创建块范围。

因为我们已经使用“let”关键字定义了“pet”,所以我们可以在代码块内访问它。但是,“pet”在全局范围内不可用。因此,如果我们尝试在代码块外访问“pet”,则会收到错误:

注意:块作用域不会为 var 变量创建作用域。

词汇范围
词法作用域比其他类型的作用域稍微复杂一些。有时它也被称为静态作用域或编译时作用域。

词法作用域是指变量的作用域由其在代码中的位置决定。换句话说,变量与其父变量在同一个作用域内可用。
Post Reply