为什么JavaScript中没有空字符串== null

时间:2015-03-05 16:58:22

标签: javascript

据我所知,根据ECMAScript,空字符串和null都是假的。如果两者都是假的,那么为什么以下评估为真呢?

    var emptyString = '';
    if (emptyString == null) {
        console.log('emptyString == null');
    }
    else {
        console.log('emptyString does not == null'); // but why?
    }

2 个答案:

答案 0 :(得分:4)

  

空字符串和null都是假的

是的,但这并不意味着所有的假值都会彼此相等。 NaN0也都是假的,但它们肯定不相等。反之亦然,"0" == 0"0"不是假的。

值的草率等值由Abstract Equality Algorithm及其类型强制定义,null==之外的任何内容都不是undefined

答案 1 :(得分:2)

更常用的抽象比较(例如==)在进行比较之前将操作数转换为相同的类型。

这里,null是一个假值,但是null不是== false

虚假值null和undefined不等于除了它们之外的任何东西:

(null == false); // false
(null == null); // true
(undefined == undefined); // true
(undefined == null); // true

由于另一个操作数为null(也是javascript中的一个类型),空字符串(falsy value)和null的抽象比较不会给出真值。

我认为这会对你有帮助。

Comparison Operators

这也是

Truthy and Falsy: When All is Not Equal in JavaScript