迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中 let 和 var 的区别

作者:迹忆客 最近更新:2024/03/20 浏览次数:

这篇教程文章解释了 JavaScript 中 varlet 关键字的实际工作方式以及它们的主要区别。

与其他编程语言一样,JavaScript 具有用于存储值和数据的变量。在 JavaScript 中,我们同时使用 letvar 关键字来声明变量。

有些人认为这两个关键字可以互换使用,但事实并非如此。两者之间的主要区别可能会导致我们的编程出现重大错误。

在 ES6 更新到 JavaScript 之前,只有一种方法可以在 JavaScript 中声明变量和常量。但是自从 ES6 更新以来,我们现在有了 letconst 关键字用于声明变量和常量。

letconst 关键字添加到 JavaScript 的主要原因之一是使用 var 关键字声明的变量不是声明它的块。相反,它的范围仅限于函数,导致一些编程问题,我们将在文章的后半部分讨论。

让我们看一下这段代码以便更好地理解。

function example() {
  for (let i = 0; i < 10; i++) console.log(i);

  console.log(i);
}
example();

在这个代码段中,我们在 for 循环中声明了变量 i 并使用 console.log 来获取变量的值。我们没有在 for 循环之后使用 {} 括号,所以 for 循环的块只是下一行。

但是,我们使用了额外的 console.log 来显示 i 的值。但是第二个 console.log 将无法获取变量 i 的值,并会显示以下错误:

ReferenceError: i is not defined

发生此错误是因为变量 i 的范围仅适用于 for 循环块,并且无法在块外访问。因此,通过这种方式,我们不能使用块外的变量,因为使用 let 关键字声明的变量的范围仅限于块。

要查看 letvar 之间的区别,请查看以下代码段:

function example() {
  for (var i = 0; i < 10; i++) console.log(i);

  console.log(i);
}
example();

在上面的代码中,我们可以观察到我们使用了 var 关键字代替了 let 关键字。

虽然在前面的示例中保留了相同的两个 console.log,但在这种情况下,第二个 console.log 也将有一个输出。那么,让我们看看输出:

0
1
2
3
4
5
6
7
8
9
10

第一个 console.log 打印从 09 的值,条件 i<10 也是如此。

但是我们可以将 10 视为肯定不是来自第一个 console.log 的输出。因此,这个 10 是第二个 console.log 输出。

这里的问题是,变量 i 应该在其块内使用,但由于块外的 console.log 访问了它,这意味着它已经超出了它的范围。

它证明了 letvar 关键字用于声明变量,但 var 关键字声明的变量在其范围方面仅限于块。但是,var 关键字的作用域仅限于函数。

如果我们在函数外部声明一个变量,letvar 之间还有另一个主要区别。如果我们在函数外部使用 let 关键字,则会创建一个无法从外部访问的局部变量。

但是如果我们使用 var 关键字,它就会变成一个全局变量。让我们看一下下面的代码段:

var color = 'blue';
let model = '2021';

在此代码段中声明了两个变量,一个使用 let 关键字,另一个使用 var 关键字。因此,使用 var 关键字声明的变量已成为全局变量,并将附加到浏览器中的 window 对象。

在浏览器中,我们有一个窗口对象,它有很多属性和方法,而且非常复杂。前端应用程序开发人员广泛了解窗口对象,因为他们经常使用它。

每次我们在函数外使用 var 关键字时,该变量都会成为全局变量,并与 window object 关联,并且可以从 window object 访问。在这种情况下,它将被访问为 window.color 将显示 color 变量内的值,即 blue

我们使用第三方库并使用 var 关键字在函数外部声明变量。如果第三方库有一个与我们的变量同名的变量,该变量将覆盖我们的变量。

这是我们避免向窗口对象添加任何内容的另一个原因;我们的意思是在这种情况下避免使用 var 关键字。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Do you understand JavaScript closures?

发布时间:2025/02/21 浏览次数:108 分类:JavaScript

The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.

Do you know about the hidden traps in variables in JavaScript?

发布时间:2025/02/21 浏览次数:178 分类:JavaScript

Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av

How much do you know about the Prototype Chain?

发布时间:2025/02/21 浏览次数:150 分类:JavaScript

The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start

用 jQuery 检查复选框是否被选中

发布时间:2024/03/24 浏览次数:102 分类:JavaScript

在本教程中学习 jQuery 检查复选框是否被选中的所有很酷的方法。我们展示了使用直接 DOM 操作、提取 JavaScript 属性的 jQuery 方法以及使用 jQuery 选择器的不同方法。你还将找到许多有用的

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便