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

JavaScript - Solution of an exercise does not work when using let instead of 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);

因为 let 关键字比 var 更能限制变量范围。

检查这个:let on MDN

如果你想在循环块之外访问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

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