JavaScript let和var的使用
不久前,我读了一些关于在JavaScript中使用let和var的文章,他们说您使用“var”关键字声明的变量(甚至在for循环中)只在它的函数中起作用,那么为什么可以在一个函数中创建多个for循环,每个for循环看起来像:JavaScript let和var的使用,javascript,function,variables,for-loop,Javascript,Function,Variables,For Loop,不久前,我读了一些关于在JavaScript中使用let和var的文章,他们说您使用“var”关键字声明的变量(甚至在for循环中)只在它的函数中起作用,那么为什么可以在一个函数中创建多个for循环,每个for循环看起来像:for(var I=0;I代码>,因为它允许 >吊起< /强>,这意味着允许多个相同变量的声明,并且它们被移动到封闭的功能范围。但是它们仍然是相同的变量。 function foo(){ for(var i=0; i<3; i++){ console.log("x
for(var I=0;I
JavaScript对“重新定义”i变量没有问题吗?谢谢:)JS对var
有一个特例,因为它允许提升,这意味着允许对相同变量进行多个声明,并将它们移动到封闭的功能范围。然而,它们仍然是相同的变量。考虑下面的代码:
function foo(){
for(var i=0; i<3; i++){
console.log("x");
}
for(var i;i<6;i++){
console.log("y");
}
}
foo()
函数foo(){
对于(var i=0;i js有一个特殊的情况,用于<代码> var >代码>,因为它允许<强> >吊起< /强>,这意味着允许多个相同变量的声明,并且它们被移动到封闭的功能范围。但是它们仍然是相同的变量。
function foo(){
for(var i=0; i<3; i++){
console.log("x");
}
for(var i;i<6;i++){
console.log("y");
}
}
foo()
函数foo(){
对于(var i=0;i一个看似很小的问题,答案很复杂。var
是旧的方法声明。你可以在任何地方声明它,并且可以多次声明。JavaScript不会在意。所有声明的变量都可以立即使用,因为声明会被移到函数代码的最开始处。这被称为我很生气
let
是声明变量的新方法。const
存在,但我们现在对此不感兴趣。let
是块作用域。let
和作用域背后的规则可能令人困惑,但它有利于学习/理解。这是JavaScript的未来。我在我的博客文章中详细讨论了它 一个看似很小但答案却很复杂的问题。var
是一种旧的方法声明。你可以在任何地方声明它,也可以多次声明它。JavaScript不会在意。所有声明的变量都可以立即使用,因为声明会上移到函数代码的最开头。这就是所谓的提升
let
是声明变量的新方法。const
存在,但我们现在对此不感兴趣。let
是块作用域。let
和作用域背后的规则可能令人困惑,但它有利于学习/理解。这是JavaScript的未来。我在我的博客文章中详细讨论了它 ES6引入了“let”关键字,仅用于解决此问题。它允许将变量绑定到函数中的作用域,以便您不能在函数外重新声明它。例如-
for(var i=0; i<5; i++) {
console.log(i);
}
console.log(i);
for(var i=0;iES6引入了'let'关键字,仅用于解决此问题。它允许将变量绑定到函数内的作用域,以便您不能在函数外重新声明它。示例-
for(var i=0; i<5; i++) {
console.log(i);
}
console.log(i);
for(var i=0;i让您有权声明变量,这些变量的范围限制在与var不同的块、表达式语句中
var是一个关键字,它全局定义变量,而不考虑块的作用域。让您有权声明限制在块作用域内的变量,这与var不同
var是一个全局定义变量的关键字,与块作用域无关。JavaScript允许重新声明使用var
声明的变量。您可能还需要读取变量作用域。@4这不是真的。您现在正在考虑重新分配。您可以使用let
更改分配的变量的值>,但不能redeclare@4castle这意味着,如果有更多的for循环,i将返回到零,并继续使用新的值?我只是认为在for循环开始时声明的变量在循环中是有效的。@Andrew是的,你是对的。Edited。@Polluxvar
有一种称为“提升”的特殊行为如果变量声明出现在函数中的任何位置,则将其移到函数的顶部。JavaScript允许重新声明使用var
声明的变量。您可能还希望读取变量范围。@4 castle这不是真的。您现在正在考虑重新分配。您可以更改在g让
,但不能redeclare@4castle这意味着,如果有更多的for循环,i将返回到零,并继续使用新的值?我只是认为在for循环开始时声明的变量在循环中是有效的。@Andrew是的,你是对的。Edited。@Polluxvar
有一种称为“提升”的特殊行为如果变量声明出现在函数中的任何位置,则将其移动到函数的顶部。