JavaScript 作用域17 Mar 2025 | 5 分钟阅读 JavaScript 中的作用域是什么?在 JavaScript 中,作用域是指代码的当前上下文,变量在其中被声明并可以被访问。简而言之,它帮助我们决定在 JavaScript 中声明变量或函数如何影响我们之后访问它们的位置。 作用域可以被定义为执行的区域,表达式和值可以在其中被引用。所以,如果我们把一个变量定义在一个函数内部,那么我们只能在那个函数内部访问它。 JavaScript 中的作用域类型JavaScript 中有几种作用域类型,例如全局作用域、局部作用域、函数作用域、块级作用域和词法作用域。现在让我们详细探讨其中一些作用域。 全局作用域在 JavaScript 中,全局作用域意味着一个变量或函数在我们的程序中任何地方都可以使用。它是变量和函数最常见也是默认的作用域。 如何在全局作用域中声明变量? 在全局作用域中,变量可以从 JavaScript 代码的任何部分访问。 示例 正如你在示例中看到的,我们声明了一个名为 `pet` 的变量,其值为 `cat`。现在,我们还定义了一个名为 "printPet" 的函数,它会将 `pet` 的值打印到控制台。 你可以看到,我们在全局作用域中定义了 `pet`,我们可以在 "printPet" 函数内部访问它。 局部作用域局部作用域在 JavaScript 中意味着一个变量或函数在当前代码块中可用。在局部声明变量会限制其可见性,仅限于定义它的代码块、函数或条件语句。 如何在局部作用域中声明变量? 如果我们想创建一个局部作用域,我们需要使用花括号 `{}`。 示例 让我们举一个例子来理解 JavaScript 中局部作用域的声明。 在上图中,我们定义了一个名为 `car` 的变量,其值为 'BMW'。我们使用了花括号来为该变量创建了一个局部作用域。 现在 'car' 处于局部空间,所以我们无法在花括号外部访问它。如果你在花括号内部访问该作用域,它仍然可用。 函数作用域它与局部作用域非常相似,我们在函数内部定义变量和函数,它们只在该函数内部可用。变量可以在函数内部定义,并且不能从函数外部访问。我们可以使用 `var`、`let` 和 `const` 关键字来声明变量,因为它们在函数内部声明时非常相似。 示例 在上面的例子中,我们定义了一个名为 "printCar" 的函数。我们需要定义一个名为 'car' 的变量,其值为 'Audi'。 我们必须在 "printCar" 函数内部定义 'car',这样我们才能在函数内部访问它。如果我们尝试在函数外部访问 car,我们将收到一个错误。 块级作用域它帮助我们创建只在代码块内部可用的变量和函数。我们在条件语句和循环中使用块级作用域,这样我们就可以控制变量的作用域。 简而言之,块级作用域是一系列嵌套在更大容器中的盒子,每个盒子都有自己的一组变量。 如何声明块级作用域的变量? 当变量在块级作用域中声明时,它只能在定义它们的块内访问。这些变量就像套娃中的隐藏宝藏,只在各自的隔间内知道并可访问。 例如 在这段代码中,我们在 `if` 语句创建的块中定义了 `blockVariable`,它在块外部是不可访问的。 词法作用域在 JavaScript 中,与其它作用域相比,词法作用域可能更复杂。它也称为静态作用域或编译时作用域。 这意味着一个变量的作用域是由它在代码中的位置决定的。简单来说,变量在其父变量的相同作用域内是可访问的。 示例 在这个例子中,我们定义了一个名为 `vehicle` 的变量,其值为 Jaguar。我们还定义了一个名为 printVehicle 的函数。 由于我们在全局作用域中定义了 `vehicle` 变量,因此它在 printVehicle 函数中可用。如果我们尝试在代码块内访问 `vehicle`,它将不可用。 示例 在上面的例子中,我们可以定义一个名为 `vehicle` 的变量,其值为 Jaguar。我们还可以定义一个名为 'printVehicle' 的函数。 我们可以在全局作用域中定义 `vehicle` 变量,它在 "printVehicle" 函数中是可用的。 为什么作用域在 JavaScript 中很重要?作用域在 JavaScript 中很重要,原因有几个。其中一些原因如下: 防止变量名冲突 在 JavaScript 中,当我们在同一作用域中用相同的名字声明两个变量时,我们会遇到错误,代码将无法正常工作。 提高代码安全性 借助 JavaScript 中的作用域,我们可以将变量和函数的访问限制在适当的作用域边界内。它还有助于我们防止未经授权方无意中修改或窃取敏感数据。 提高代码效率 JavaScript 中作用域的使用也可以提高代码效率。如果我们使用适当的作用域,我们可以减少不必要的内存使用,它也有助于我们减少时间。 示例 1在这个例子中,我们声明了两个变量,一个变量具有全局作用域,第二个变量具有局部作用域。这两个变量都以相同的名称声明。 在输出中,我们可以看到局部作用域的变量覆盖了全局变量的值。 输出 ![]() 下一个主题JavaScript scroll |
JavaScript 中的 parse() 方法用于解析指定的日期字符串并返回指定日期和 1970 年 1 月 1 日之间的毫秒数。如果字符串没有有效值或无法识别,则该方法返回...
阅读 2 分钟
JavaScript 日期格式 JavaScript 中的日期格式化包括将日期更改为不同的格式,操纵书写日期的方式以及提取单个元素(如日或特定时间)。这对于时区转换或显示日期等任务很重要……
阅读 6 分钟
在本文中,我们将了解如何使用 JavaScript 计算两个日期之间的差异。如果我们使用正确的方法,那么计算差异的技术就很简单。日期对象是使用 JavaScript 计算日期之间差异所必需的……
阅读 3 分钟
该对象以类似数组的方式说明了底层二进制数据缓冲区。有许多全局属性,其值是特定元素类型的 TypedArray 构造函数,如下列出。TypedArray 类型 Int8Array 字节大小:1 描述:8 位二补码带符号整数。类型:字节。值范围:……
阅读 3 分钟
对象 对象是一种集合类型,几乎与 Map 类似。它将每个元素存储为键值对,其中键是弱引用的。在这里,键是对象,值是任意值。语法 new WeakMap([iterable]) 参数 iterable - 它表示一个数组...
阅读1分钟
/wait PHP 和 C 等编程语言具有 sleep(sec) 函数来暂停执行固定一段时间。Java 有 thread.sleep(),Python 有 time.sleep(),GO 有 time.sleep(2*time.second)。与其他语言不同,JavaScript 没有 sleep() 函数。我们可以使用一些……
阅读 3 分钟
?在本文中,我们将了解如何在 JavaScript 中向对象添加属性。JavaScript 对象 JavaScript 对象是以键值对形式存在的属性组。语法:const obj = { property1: value1, property2: value2, property n: value3, }; ...
阅读 4 分钟
JavaScript 中的 onscroll 事件在元素使用滚动条时发生。当用户向上或向下移动滚动条时,事件会触发。我们可以使用 CSS overflow 属性创建滚动条。在 HTML 中,我们可以使用 onscroll 属性...
阅读 3 分钟
回调函数可以定义为作为参数传递给另一个函数的函数。不要将回调与关键字关联起来,因为回调只是传递给函数的参数名称。换句话说,我们可以说...
阅读 3 分钟
对象 对象是允许我们存储弱引用对象的集合类型。与 Set 不同,WeakSet 只是对象的集合。它不包含任意值。语法 new WeakSet([iterable]) 参数 iterable - 它表示一个可迭代对象,其元素将被添加...
阅读1分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India