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



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

var 是一个函数或全局范围变量,取决于它的定义位置。

哪里

let 是块范围变量

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

所以我想问在哪里使用 let 和在哪里使用 var?如果可能,请提供任何相关链接。如果我去推荐,我必须到处使用。

我的理解是这样的。

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

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

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

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

比方说,我有文件索引.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,而让作为块范围?请提供任何推荐的链接,描述什么在哪里更好以及为什么?

谢谢。

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

在几乎所有情况下,let更好或至少等同于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) })
}

第一个做一个闭包,捕捉i,由var定义,而另一个做i不同的值。第一个示例使每个回调警报为 6,因为它们都指向同一个对象。但是,第二个示例中的let每次迭代时都会创建一个新的块范围。这解决了javascript中一个非常常见的陷阱。

在大多数情况下,如果您需要使用var的范围来实现使用let不可用的东西,这几乎总是有问题的标志。

另外,不要依赖var的可变吊装。如果您使用的是以前未声明的变量,则它很容易出错。

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

letvar

当您 wan 全局定义变量或局部定义整个函数时,无论块范围如何,都应使用var。使用var关键字分配的变量具有功能范围。该变量无法在函数外部访问。

并且,您应该使用let来声明范围仅限于使用它的块、语句或表达式的变量。在块内使用时,let将变量的范围限制在该块内。

let赋值的变量与用var定义的变量非常相似。主要区别在于范围。这已在上面提到过。分配了 let 的变量具有块范围。这意味着变量可以在该块和任何子块中看到。分配了var的变量具有功能范围,并忽略块范围规则。分配了let的变量不能重新声明,只能重新分配。

根据本文,仅当您知道变量将具有动态值时才使用let关键字。您可能不再需要使用 var

显然,您知道letvar之间的区别,您的问题是在哪里使用哪个?

首先,如果您正在寻找更好的性能,请在任何可能的地方使用 let。但是,您必须知道某些旧浏览器可能无法处理let.

其次,我认为对你的问题最好和最短的答案是"尽可能长时间地使用let,如果你不能,那就使用var"。

如果你深入研究letvar之间的差异,你可以找出你应该在哪里使用var而不是let,我建议你阅读这篇文章。

最新更新