最近在JavaScript中养成了使用的习惯
if(data !== "")
检查数据是否为空||未定义 ||空白字符串。
当我尝试使用
if(data !== null)
//work here
Resharper 向我抛出一个可怕的错误,说
"qualifier can be null or undefined"
我添加了一个 jFiddle 只是为了澄清:JsFiddle
我的问题是:这是 ReSharper 错误还是背后有什么原因?
最佳答案
首先,你的习惯是错误的。使用:
if(data !== "")
只会检查空字符串。如果 data
是 undefined
或 null
,if block 仍然会执行,因为 !==
检查相等性而不执行任何类型的转换。
其次,ReSharper 没有问题。它试图告诉你你可能犯了一个错误。 if(data !== null)
将只检查 null。 undefined
和空字符串仍将返回 true 并导致 block 执行。 ReSharper 警告您可能犯了一个错误(因为您很少需要只检查null
)。
请记住 undefined !== null !== ""
。您可以尝试所提到的几个快捷方式,但如果您真的希望您的代码完整,只需检查所有三个。如果您担心代码太长,请将检查移至实用方法:
function hasValue(var data) {
return (data !== undefined) && (data !== null) && (data !== "");
}
关于javascript - 为什么 !== ""不等于 !== null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413881/