【发布时间】:2012-06-12 16:38:48
【问题描述】:
我本来打算在比较字符串值时一直使用===(三等号,严格比较),但现在我发现
"foo" === new String("foo")
是假的,和这个一样:
var f = "foo", g = new String("foo");
f === g; // false
当然:
f == g; // true
那么建议始终使用 == 进行字符串比较,还是在比较之前始终将变量转换为字符串?
【问题讨论】:
-
可能是因为
foo是纯字符串,new String("foo")是对象字符串 -
建议不要使用
new String(完全没有意义)创建字符串,而不要使用== -
为什么有人想首先在 Javascript 中使用像
new String("foo")这样的构造?我从未在代码中看到过这样的代码,即 jQuery... -
收到“字符串”参数后,您可以使用
String(obj)将装箱字符串转换为原语。("foo" === String(new String("foo"))) === true
标签: javascript object equality