JavaScript let和var的使用

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

不久前,我读了一些关于在JavaScript中使用let和var的文章,他们说您使用“var”关键字声明的变量(甚至在for循环中)只在它的函数中起作用,那么为什么可以在一个函数中创建多个for循环,每个for循环看起来像:
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。@Pollux
var
有一种称为“提升”的特殊行为如果变量声明出现在函数中的任何位置,则将其移到函数的顶部。JavaScript允许重新声明使用
var
声明的变量。您可能还希望读取变量范围。@4 castle这不是真的。您现在正在考虑重新分配。您可以更改在g
,但不能redeclare@4castle这意味着,如果有更多的for循环,i将返回到零,并继续使用新的值?我只是认为在for循环开始时声明的变量在循环中是有效的。@Andrew是的,你是对的。Edited。@Pollux
var
有一种称为“提升”的特殊行为如果变量声明出现在函数中的任何位置,则将其移动到函数的顶部。