2016-07-05 52 views
-4

我在JS方面相當生疏,最近遇到了一個我不明白的問題,所以我希望有人能向我解釋這個。想知道替換後的「null」

var aList = {a:"aaa", b:"bbb", c:"ccc", d:null} 
var aString = "a"; 
var anotherString = "d"; 

如果我取代以下方式ASTRING:

aString.replace(aString, aList[aString]); 

我得到預期的 「AAA」。但是,如果我這樣做

anotherString.replace(anotherString, aList[anotherString]); 

它會導致「null」而不是null,正如我所料。爲什麼是這樣?

編輯:注意到我實際上忘記了對象中的空值。對不起大家。我責怪它在清晨:)

+0

但是你最後的替換結果是字符串'「ddd」'......更一般地說,一個字符串替換應該總是導致一個字符串,而不是'null'。 – nnnnnn

+6

http://jsbin.com/lubedec/1/edit?js,console - 我不知道你爲什麼期望它是'null',但它不是'null''。 – Quentin

+0

是的,結果是'「ddd」',而不是'null'或'「null」' – MrFabio

回答

1

它導致「空」,而不是空,因爲我期望。爲什麼是這樣?

因爲您正在用新的子字符串替換字符串的子字符串。 null必須轉換爲一個字符串才能做到這一點。將null轉換爲一個字符串使其成爲"null"(您可以通過測試"" + null來看到這一點)。

+0

好的,這是有道理的。由於整個字符串被替換,我期望null。感謝您及時的回覆! – bjelleklang