为什么不't空字符串==在JavaScript中为null

Why doesn't empty string == null in JavaScript

本文关键字:JavaScript 中为 null 字符串 为什么不      更新时间:2023-09-26

根据ECMAScript,我知道空字符串和null都是错误的。如果两者都是假的,那么下面的结果为什么不为真呢?

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

空字符串和null都是错误的

是的,但这并不意味着所有错误的值都是相等的。NaN0都是伪的,但它们绝对不相等。反过来也不成立,"0" == 0"0"不成立。

值的草率等价是由抽象等式算法及其类型矫顽力定义的,nullundefined来说根本不是==

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

这里,null是一个错误的值,但null不是==错误的

null和undefined的falsy值除了它们自己之外并不等价:

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

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

我想这会对你有所帮助。

比较运算符

这个也是

Truthy和Falsy:当JavaScript 中的All不相等时