2013-03-05 141 views
0

我有这样的JavaScript代码在我的应用程序:为什么inputStr ===“”总是假?

var boo = function(inputStr) { 
    if (!inputStr || inputStr === "") { 
     throw new Error("Input is null or empty."); 
    } 
    return new Aftamat(inputStr); 
}; 

而且ReSharper的说,inputStr === ""总是false。为什么?这是Resharper的bug吗?

+0

===检查值和数据类型。 “5”== 5返回true。但“5”=== 5返回false,因为数据类型不同。同样在上面的问题中,如果没有输入任何内容,它会生成不等于字符串的空数据类型。所以,它返回false。 – 2013-03-05 07:58:49

回答

2

如果字符串是空的,它是一种虚假的......所以!inputStr将返回true,实际上你inputStr === ""将永不检查,如果你的字符串是空的

1

大概是因为如果inputStr === ""是真实的,那么!inputStr也将是真的,但如果!inputStr为真,那么inputStr === ""永远不会被检查。

也就是说,只有在测试必须为真的情况下才能达到该代码。