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.
为什么?替换不区分"null"
和null
吗?
我问是因为我在 angularjs 中遇到了一个错误:
replace((pctEncodeSpaces ? null : /%20/g), '+');
例如,如果某人的用户名是"null"
并用作 url,则在任何$http
调用中都将替换为“+”。例如GET /user/null
。
并不是说这种情况会经常发生,但我更好奇为什么替换款待null
和"null"
相同的东西。null
在替换之前是否替换 .tostring ?这只是Javascript的一个怪癖吗?
我在 IE 和 Chrome 的replace
.