用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);
答案 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);
会给出你是个错误。