Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';t空字符串==JavaScript中的null_Javascript - Fatal编程技术网

为什么';t空字符串==JavaScript中的null

为什么';t空字符串==JavaScript中的null,javascript,Javascript,据我所知,根据ECMAScript,空字符串和null都是错误的。如果两者都是虚假的,那么为什么下面的评估结果不是真的 var emptyString = ''; if (emptyString == null) { console.log('emptyString == null'); } else { console.log('emptyString does not == null'); // but why? }

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

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

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

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

falsy值null和undefined不等同于除其自身之外的任何内容:

(null == false); // false
(null == null); // true
(undefined == undefined); // true
(undefined == null); // true
由于另一个操作数为null(这也是javascript中的一种类型),空字符串(falsy值)和null的抽象比较不会给出真实值

我想这对你有帮助

还有这个

空字符串和null都是错误的

是的,但这并不意味着所有的falsy值都是相等的
NaN
0
也都是错误的,但它们绝对不相等。反之亦然,
“0”==0
,但
“0”
并不可靠


值的草率等价是由及其类型强制定义的,
null
不是
==
而是
未定义的

,因为空字符串与无字符串不同。因为您没有将每个字符串与false(y)进行比较,您正在将空字符串与空值进行比较。苹果和橙子都是水果,但是
Apples==oranges
也会计算为false。这个问题并没有那么牵强。JavaScript中的相等运算符执行类型强制,并且有些不一致。例如,
'=[]
为真,但
'
为假值,
[]
为真值。另外,
null==undefined
是真的,所以至少还有另外一种情况,
null
等于另一个假值;尝试
0==''
,您将看到它的计算结果实际上是真的。我想这现在开始有意义了。实际上,您不希望任何内容
==
===null
,因为
null
应用于检查其他值和类型。这正是他们对其他值和类型进行真实/虚假评估的原因。这提供了一种类似于
if(emptyString)
的方法,如果您不知道将要接收的值是空字符串还是null,则可以使用该方法来替换null检查。