正如你所看到的,这段代码相当简单,我实际上理解了其中的大部分内容,但唯一让我困惑的是开头的 if 语句,更具体地说是 null 的使用。从我读到的内容来看, null 成为值或替代,与 undefined 不同,它只是未定义。那么为什么在这种情况下使用 null 呢?
function range(start, end, step) {
if (step == null) step = 1;
var array = [];
if (step > 0) {
for (var i = start; i <= end; i += step)
array.push(i);
} else {
for (var i = start; i >= end; i += step)
array.push(i);
}
return array;
}
function sum(array) {
var total = 0;
for (var i = 0; i < array.length; i++)
total += array[i];
return total;
}
console.log(range(1, 10))
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55
最佳答案
如果不进行 range 调用,
step
将是未定义的,之所以有效,是因为弱比较 null == undefined
为 true,但是如果我们使用更严格的评估,即 null === undefined
我们得到 false。
关于javascript - 对一段代码感到困惑,特别是 null : Eloquent Javascript practice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41555131/