在javascript中哪里使用'var'和'let'?(不问区别)
我已经读了我的博客关于var和let。我看到的是这个 var是一个函数或全局范围变量,具体取决于定义它的位置 在哪里 设为块作用域变量 所以在很多文章中,我看到他们建议使用let而不是var。我理解这一点,因为它消除了变量范围的冲突 所以我想问在哪里使用let,在哪里使用var?如果可能,请提供相关链接。如果我去推荐,我就得到处使用let 我的理解是这样的在javascript中哪里使用'var'和'let'?(不问区别),javascript,ecmascript-2017,Javascript,Ecmascript 2017,我已经读了我的博客关于var和let。我看到的是这个 var是一个函数或全局范围变量,具体取决于定义它的位置 在哪里 设为块作用域变量 所以在很多文章中,我看到他们建议使用let而不是var。我理解这一点,因为它消除了变量范围的冲突 所以我想问在哪里使用let,在哪里使用var?如果可能,请提供相关链接。如果我去推荐,我就得到处使用let 我的理解是这样的 let应在for循环中使用,因为它创建了自己的词法范围 for(let i =0;i<5;i++){ setTimeout(fun
let
应在for循环中使用,因为它创建了自己的词法范围
for(let i =0;i<5;i++){
setTimeout(function(){
console.log(i);
},100);
}
for(让i=0;i现在只使用let
基本上是正确的
在几乎所有情况下,let
是一种更好的方法,或者至少相当于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) })
}
for(变量i=0;i<6;i++){
document.getElementById('my-element'+i)
.addEventListener('click',function(){alert(i)})
}
与本守则相反:
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) })
}
for(设i=0;i<6;i++){
document.getElementById('my-element'+i)
.addEventListener('click',function(){alert(i)})
}
第一个示例生成一个闭包,该闭包捕获由var
定义的i
,而另一个示例生成不同的i
值。第一个示例生成每个回调警报6,因为它们都指向同一个对象。但是,第二个示例中的let
在每次迭代时生成一个新的块范围。This解决了javascript中一个非常常见的陷阱
在大多数情况下,如果您需要使用var
的作用域来实现使用let
无法实现的功能,那么几乎总是一个迹象表明某些功能出错
另外,不要依赖于var
的变量提升。如果您使用的是以前没有声明的变量,那么它很容易出错
大多数情况下,请尝试遵循您遵循的样式指南。如果您没有遵循的特殊样式指南,请尝试AirBnB:
这里提到了“永远不要使用var
和使用let
”这句话:现在只使用let
基本上是正确的
在几乎所有情况下,let
是一种更好的方法,或者至少相当于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) })
}
for(变量i=0;i<6;i++){
document.getElementById('my-element'+i)
.addEventListener('click',function(){alert(i)})
}
与本守则相反:
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) })
}
for(设i=0;i<6;i++){
document.getElementById('my-element'+i)
.addEventListener('click',function(){alert(i)})
}
第一个示例生成一个闭包,该闭包捕获由var
定义的i
,而另一个示例生成不同的i
值。第一个示例生成每个回调警报6,因为它们都指向同一个对象。但是,第二个示例中的let
在每次迭代时生成一个新的块范围。This解决了javascript中一个非常常见的陷阱
在大多数情况下,如果您需要使用var
的作用域来实现使用let
无法实现的功能,那么几乎总是一个迹象表明某些功能出错
另外,不要依赖于var
的变量提升。如果您使用的是以前没有声明的变量,那么它很容易出错
大多数情况下,请尝试遵循您遵循的样式指南。如果您没有遵循的特殊样式指南,请尝试AirBnB:
这里提到了“永远不要使用var
和使用let
”这句话:一个标识符只能用来表示一个概念。(好的编程技巧)
const
表示无法重新分配标识符
如果您不需要重新分配,const
应该是您的默认选择,而不是let
,因为您希望代码中的用法尽可能清楚
当我需要let
重新分配变量时,我会使用let
。因为,我使用一个变量来表示一件事,let
的用例往往是用于循环或数学算法
我没有在ES6中使用var
。循环的块范围中有值,但我想不出我更喜欢var
而不是let
const
表示标识符不会被重新分配
let
,是一种信号,表示变量可以重新分配,例如循环中的计数器,或算法中的值交换。它还表示变量将仅在中定义的块中使用,而该块并不总是完整的包含函数
var
现在是在JavaScript中定义变量时可用的最弱信号可用。变量可能或不可被重新分配,并且该变量可能或不可用于整个函数,或仅用于块或循环
我希望我回答了你的问题,任何困惑都请告诉我。单个标识符只能用于表示单个概念。(好的编程技巧)
const
表示无法重新分配标识符
如果您不需要重新分配,const
应该是您的默认选择,而不是let
,因为您希望代码中的用法尽可能清楚
我使用let
时