【发布时间】:2018-02-07 05:06:44
【问题描述】:
我正在尝试“严格模式”并在 for 循环中使用关键字 let,如下所示:
(function() {
"use strict";
var numbers = [1,2,3,4,5];
var value;
for (let i = j = 0; i < numbers.length; i++) {
j += numbers[i];
value = j;
}
console.log ("\tThe reduced value is: ", value);
})();
这会产生 Uncaught ReferenceError: j is not defined,但通过删除“use strict”,代码运行良好。
代码是我jsfiddle的缩减子集
【问题讨论】:
-
试试这个方法,使用前先分配
j,for (let j, i = j = 0; i < numbers.length; i++) { -
(如果没有严格模式,它不会运行 fine - 它悄悄地做错事。)
-
@AswinRamesh:虽然
let j, i = j = 0完全正确,但我更愿意使用let i = 0, j = 0。电脑不在乎,同事会感激不尽。 :P -
附带说明,value = [1,2,3,4,5].reduce((sum, next) => sum+next, 0);和上面的循环做同样的事情。
-
@Ryan。安静地创建一个没有严格模式的全局变量 j 我现在明白了。
标签: javascript ecmascript-6 let