【问题标题】:Second conditional with null value具有空值的第二个条件
【发布时间】:2016-08-03 08:30:50
【问题描述】:

我有以下代码:

function listToArray(list) {
    var array = [];
    for(var node = list; node; node = node.rest) {
      console.log(node.rest);
      array.push(node.value);
    }

    return array;
}

例如:像 [1, 2, 3] 这样的数组会以 { value: 1, rest: { value: 2, rest: { value: 3, rest: null }}} 这样的列表形式显示。

函数中for循环的条件最终会产生null。我的问题是,这个条件是如何工作的?通常你会有一个布尔表达式,例如:i <= 10。 AFAIK,null 不会评估为虚假值...那么条件如何工作?

【问题讨论】:

  • null 在 JavaScript 中是错误的
  • JS 中的虚假值:false0、空字符串、nullundefinedNaN
  • 为什么标题说 second 有条件?您的代码中只有一个条件。
  • @Barmar 抱歉,现在编辑; @alex,巴尔玛;为什么'' == false 等于true,而null == false 不等于?

标签: javascript


【解决方案1】:

for 循环中的条件是一个表达式,在每次迭代时都会计算。如果计算结果为 true ,则执行语句。因为 null、0 等。被认为是假的,它不执行。

来源:-https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for

【讨论】:

  • 对。但是您无法像使用 '' == false 那样使用 null == false 看到这一点。
  • 在条件中,null 值被视为 false。这里在 null==false 中,您正在检查 null == false 是否不是,null 和 false 是不同的东西
  • 所以它与上下文有关?在一个等于它不是假的,在一个条件下它是。
  • if(false) 或 if(null) ,同样的事情,但 null 不等于 false。 '==' 运算符尝试将操作数转换为相同的类型。检查 2=="2"。由于 null 表示没有值,所以 null==false 返回 false
  • 我知道我的想法哪里出了问题。谢谢你。
猜你喜欢
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
相关资源
最近更新 更多