gpt4 book ai didi

javascript - 在 javascript 中在哪里使用 `var` 和 `let`? (不问区别)

转载 作者:行者123 更新时间:2023-11-30 08:21:33 25 4
gpt4 key购买 nike

我已经阅读了我关于 var 和 let 的博客。我看到的是这个。

var is a function or global scope variable depend on where it is defined.

在哪里

let is block scope variable

所以在很多文章中,我看到他们建议使用 let 而不是 var。我理解,因为它消除了变量范围的冲突。

所以我想问一下,哪里用let,哪里用var?如果可能,请为此提供任何相关链接。如果我接受推荐,那么我必须在任何地方都使用 let。

我的理解是这样的。

let 应该在 for 循环中使用,因为它会创建自己的词法范围。

for(let i =0;i<5;i++){
setTimeout(function(){
console.log(i);
},100);
}

所以在这种情况下,因为 let,我们将能够打印 0、1、2、3、4,但如果我们使用 var,它将打印 5 次 5。

另外,我想知道您对函数作用域和全局作用域应该使用什么的建议?

比方说,我有文件 index.js

var first = 1; // what should be used here and why

function function1(){
var first = 1; // what should be use here and why `let or var`
var first1 = 2; // what should be use here and why `let or var`
for(let i=0;i<2;i++){
console.log(i);
}

另外,我补充说 let 不仅仅是一个变量,我创建了它自己的词法范围,在幕后会有更多的操作,比如创建 IIFE 之类的东西。

我的理解是,我们应该将函数和全局作用域用作 var 而只用作 block 作用域?请提供任何推荐的链接,描述什么地方更好,为什么?

谢谢。

最佳答案

现在只使用 let 基本上是正确的。

在几乎所有情况下,let 都比 var 更好或至少等效于 var 考虑到泄漏声明会使您编写容易出错的代码。 避免使用 var.

看这段代码:

for(var i = 0; i < 6; i++) {
document.getElementById('my-element' + i)
.addEventListener('click', function() { alert(i) })
}

与此代码相反:

for(let i = 0; i < 6; i++) {
document.getElementById('my-element' + i)
.addEventListener('click', function() { alert(i) })
}

第一个闭包捕获由 var 定义的 i,而另一个使 i 具有不同的值。第一个示例使每个回调警报为 6,因为它们都指向同一个对象。但是,第二个示例中的 let 每次迭代时都会生成一个新的 block 作用域。这解决了 javascript 中一个非常常见的陷阱。

在大多数情况下,如果您需要使用 var 的范围来实现使用 let 无法实现的功能,这几乎总是表明出现了问题。

此外,不要依赖var 的变量提升。如果您使用的是之前未声明的变量,则它很容易出错。

大多数情况下,请尝试遵循您遵循的风格指南。如果您没有遵循的特殊风格指南,请尝试 AirBnB 的:https://github.com/airbnb/javascript这里提到了“永远不要使用 var 而使用 let”:https://github.com/airbnb/javascript#variables

关于javascript - 在 javascript 中在哪里使用 `var` 和 `let`? (不问区别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52733578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com