2016-07-05 16 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になります。どうしてこれなの?

編集:私は実際にオブジェクトの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を文字列に変換すると、"null"になります(これは"" + nullでテストできます)。

+0

さて、それは理にかなっています。全体の文字列が置き換えられたので、私はnullを期待しました。早速のご返事ありがとうございます! – bjelleklang

関連する問題