2013-03-05 188 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 === ""永遠不會被檢查。

也就是說,只有在測試必須爲真的情況下才能達到該代碼。