JavaScript-使用let代替var时,练习的解决方案不起作用

时间:2018-07-11 17:20:19

标签: 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 z = b%10;

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

console.log (sum);

2 个答案:

答案 0 :(得分:1)

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

检查此:let on MDN

如果要在loops块之外访问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

答案 1 :(得分:1)

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