var p = "null"
var q = null;
(p == q) //false. as Expected.
p.replace(null, "replaced") // outputs replaced. Not expected.
p.replace("null", "replaced") //outputs replaced. Expected.
q.replace(null, "replaced") // error. Expected.
q.replace("null", "replaced") //error. Expected.
なんで?replace は と を区別しません"null"
かnull
?
angularjs でバグに遭遇したので質問します。
replace((pctEncodeSpaces ? null : /%20/g), '+');
たとえば、誰かが のユーザー名を持っていて、"null"
それが URL として使用された場合、すべての$http
呼び出しで「+」に置き換えられます。例えばGET /user/null
。
このシナリオが頻繁に発生するわけではありませんが、なぜ扱いnull
を"null"
同じものに置き換えるのか、もっと興味があります。replace は、置換を行う前に .tostring を実行しnull
ますか? これはJavascriptの単なる癖ですか?
IE と Chrome の両方の実装でこれを確認しましたreplace
。