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);
会给你一个错误。
我在用 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);
会给你一个错误。