【问题标题】:undefined and null未定义和空
【发布时间】:2017-06-22 15:29:21
【问题描述】:
undefined === null => false
undefined == null => true
  1. 我想了undefined == null的原因,发现只有一个案例:

    if(document.getElementById() == null) ....
    

    还有其他原因吗 (undefined === null) == false ?

  2. 有没有其他使用===的例子-javascript中的操作?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    还有其他理由使 (undefined === null) == false 吗?

    它们不相等,所以Strict Equality Comparison Algorithm 认为它们是假的。

    还有其他在javascript中使用=== - 操作的例子吗?

    === 给出了最可预测的结果。当我对类型强制有特定目的时,我只使用==。 (见Abstract Equality Comparison Algorithm。)

    【讨论】:

    • @Raynos:是的,我多等了几秒钟,这样你就可以赶上。 ;o)
    【解决方案2】:

    nullundefined 是两个不同的概念。 undefined 是缺少值(如果你用var 定义一个变量而不初始化它,它不包含null,而是undefined),而null 变量存在并且用值@ 初始化987654327@,这是一种特殊类型的值。

    虽然 JavaScript 相等运算符被破坏,但 Crockford 发现它缺乏传递性,因此建议始终使用严格相等 (===)。考虑用 Javascript 发布的这张表的优点:

    '' == '0'          // false
    0 == ''            // true
    0 == '0'           // true
    
    false == 'false'   // false
    false == '0'       // true
    
    false == undefined // false
    false == null      // false
    null == undefined  // true
    

    【讨论】:

    • "undefined 是缺少值(可能变量不存在)," 不太对。对于undefined,变量确实存在,但它已被分配(或重新分配)其默认值undefined。如果您尝试与不存在的变量进行比较,您会得到 ReferenceError
    【解决方案3】:

    === 是严格相等的。

    undefined 和 null 不是一回事。

    == 使用类型强制。

    nullundefined 相互强制。

    【讨论】:

      【解决方案4】:

      Type coercion(使用 == 运算符)可能会导致不希望的或意外的结果。在关注了我在网上找到的关于 Douglas Crockford 的所有谈话(主要是雅虎视频)之后,我一直习惯于使用 ===。鉴于我对严格相等运算符的默认用法,我现在会对类型强制 javascript 用例更感兴趣;~)。

      【讨论】:

        猜你喜欢
        • 2015-09-01
        • 2016-06-28
        • 2012-07-28
        • 2013-01-21
        • 2021-05-10
        • 2013-02-06
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多