我是一名学生,我正在为学校做一个项目。 当我在做的时候,我遇到了一个问题,并发现了一些奇怪的事情。
我需要检查某个东西是否为空或空字符串,但由于某种原因它不起作用。 这是代码片段:
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:如果这是一个愚蠢的问题,或者不太清楚,我很抱歉,但我不太擅长,现在真的很困惑
您需要了解数据在具有值时的行为方式,例如
data = 'aaa'
。在这种情况下,数据将保存值 'aaa'
。然而,如果你检查!data
,它会评估数据是否有值;如果没有值,!data
将返回false
。
当您将比较运算符
==
与 false 一起使用时,所有像 0, "0", ""
这样的值都将被强制为 false。因此,当比较 0 == false
或 "" == false
时,结果将为 true。
当您使用严格相等运算符
===
时,它不仅会比较值,还会检查数据类型。