javascript - 对一段代码感到困惑,特别是 null : Eloquent Javascript practice

标签 javascript

正如你所看到的,这段代码相当简单,我实际上理解了其中的大部分内容,但唯一让我困惑的是开头的 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/

相关文章:

JavaScript:使用 var 实现 let-working

javascript - Apache Cordova、SQLite、从 [表] 中删除,其中 id=?不返回

javascript - 使用 Node JS 将 txt 文件转换为 json

javascript - 在 JavaScript 中实现 32 位 float 或 64 位长整型?

javascript - 如何使用API​​获取谷歌地图查询结果?

JavaScript [对象元素]

php - 如何访问自定义字段 Facebook PHP SDK

java - firefox 扩展 javascript 中是否有 nsiClientSocket?

javascript - 如何在JS的文本中包含JS

javascript - 使用 MathJax 的所见即所得数学方程编辑器