JavaScript—使用let而不是var时,练习的解决方案不起作用

JavaScript—使用let而不是var时,练习的解决方案不起作用,javascript,scope,var,let,Javascript,Scope,Var,Let,我在用let替换var时收到一个错误。我认为这与它们不同的作用域有关,但不知道如何修改代码,以便它也可以与let一起工作 var array = [242, 682, 933]; for (var i = 0, sum = 0; i < array.length; sum += array[i++]){ var b = array[i]; var x = Math.floor(b/100) % 10; var y = Math.floor(b/10) % 10; var

我在用let替换var时收到一个错误。我认为这与它们不同的作用域有关,但不知道如何修改代码,以便它也可以与let一起工作

var array = [242, 682, 933];

for (var i = 0, sum = 0; i < array.length; sum += array[i++]){
  var b = array[i];
  var x = Math.floor(b/100) % 10;
  var y = Math.floor(b/10) % 10;
  var z = b%10;

  if (x+z!==y) {
    break;
  }
}

console.log (sum);
var数组=[242,682,933];
对于(变量i=0,总和=0;i
因为
关键字限制变量范围比
var
更大

选中此项:

如果要访问循环块外部的
sum
,还必须在以下外部声明它:

var array = [242, 682, 933];
let sum = 0; // <-- declaration in the highest scope

for (let i = 0; i < array.length; ++i){
  let b = array[i];
  let x = Math.floor(b/100) % 10;
  let y = Math.floor(b/10) % 10;
  let z = b%10;

  if (x + z !== y) {
    break;
  }


  sum += array[i];
}

console.log (sum); // now you can access it here
var数组=[242,682,933];

设和=0;// 因为
let
关键字对变量范围的限制大于
var
的限制

选中此项:

如果要访问循环块外部的
sum
,还必须在以下外部声明它:

var array = [242, 682, 933];
let sum = 0; // <-- declaration in the highest scope

for (let i = 0; i < array.length; ++i){
  let b = array[i];
  let x = Math.floor(b/100) % 10;
  let y = Math.floor(b/10) % 10;
  let z = b%10;

  if (x + z !== y) {
    break;
  }


  sum += array[i];
}

console.log (sum); // now you can access it here
var数组=[242,682,933];

设和=0;// 我看到的唯一问题是,当您在for循环条件中替换
var
时,您的变量
sum
将无法从for循环外部访问,因此
console.log(sum)
会给您一个错误。

我看到的唯一问题是,当您在for循环条件中替换
var
时,您的变量
sum
将无法从for循环外部访问,因此
console.log(sum)
会给你一个错误。

924预期结果?@HongyuWang为什么?声明
var sum
并在
中为
循环使用
let
@HongyuWang-这不是真的。您绝对可以在全局范围内使用
let
。只要小心b/c它在其他任何地方都有块作用域。@Maxim是的,结果是924924预期结果?@HongyuWang为什么?声明
var sum
,并在
中为
循环使用
let
@HongyuWang-这不是真的。您绝对可以在全局范围内使用
let
。注意b/c它在其他地方都有块作用域。@Maxim是的,结果是924