为什么 javascript 输出相同,即使我否定条件?

问题描述 投票:0回答:1

我是一名学生,我正在为学校做一个项目。 当我在做的时候,我遇到了一个问题,并发现了一些奇怪的事情。

我需要检查某个东西是否为空或空字符串,但由于某种原因它不起作用。 这是代码片段:

if(!data.data == null && !data.data == 'null' && !data.data == ''){ // Some code here... }

它不起作用,所以我尝试了这个:

console.log(!data.data == null)
console.log(!data.data == 'null')
console.log(!data.data == '')

当 data.data 不为空时,输出是这样的:控制台输出: false false true

所以我将其更改为:

console.log(data.data == null)
console.log(data.data == 'null')
console.log(data.data == '')

(data.data值相同) 输出更改为:控制台输出: false false false

所以我尝试在控制台中测试这个Javascript控制台

这是复制的:

var data = 'aaa'
console.log(data)
aaa
console.log(data == null)
false
console.log(!data == null)
false
console.log(!data == '')
true
console.log(data == '')
false
console.log(!data === null)
false
console.log(data === null)
false
data = null
null
console.log(data === null)
true
console.log(!data === null)

所以问题是,当值不为空时,为什么即使我对它取反,它总是输出 false,但是当值是 null 时,取反却有效?

PS:如果这是一个愚蠢的问题,或者不太清楚,我很抱歉,但我不太擅长,现在真的很困惑

javascript null console.log
1个回答
0
投票

您需要了解数据在具有值时的行为方式,例如

data = 'aaa'
。在这种情况下,数据将保存值
'aaa'
。然而,如果你检查
!data
,它会评估数据是否有值;如果没有值,
!data
将返回
false

当您将比较运算符

==
与 false 一起使用时,所有像
0, "0", ""
这样的值都将被强制为 false。因此,当比较
0 == false
"" == false
时,结果将为 true。

当您使用严格相等运算符

===
时,它不仅会比较值,还会检查数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.