javascript - 为什么 !== ""不等于 !== null

标签 javascript resharper

最近在JavaScript中养成了使用的习惯

if(data !== "")

检查数据是否为空||未定义 ||空白字符串。

当我尝试使用

if(data !== null)
   //work here

Resharper 向我抛出一个可怕的错误,说

"qualifier can be null or undefined"

enter image description here

我添加了一个 jFiddle 只是为了澄清:JsFiddle

我的问题是:这是 ReSharper 错误还是背后有什么原因?

最佳答案

首先,你的习惯是错误的。使用:

if(data !== "")

只会检查空字符串。如果 dataundefinednull,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/

相关文章:

javascript - 使用 split 和 substring 获取有关字符串的一些信息

javascript - 在同一 Controller Angular js中使用多个服务

javascript - 循环引用内存泄漏?

c# - 获取token时如何解析 "possible System.NullReferenceException"

visual-studio-2010 - Resharper(或Visual Studio)自动完成

visual-studio-2012 - 一般 NuGet 更新后,Resharper View 解析停止工作

javascript .data() 将字符串内容按空格剪切

javascript - Regex(正则表达式),替换javascript中出现的第二个

c# - 如何在格式字符串中设置占位符的颜色

visual-studio - ReSharper 的 NUnit 运行程序编译失败错误