JavaScript—使用let而不是var时,练习的解决方案不起作用
我在用let替换var时收到一个错误。我认为这与它们不同的作用域有关,但不知道如何修改代码,以便它也可以与let一起工作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
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