Soo*_*ead 13 javascript string operators
有很多教程==,===所以请不要指导我学习基础教程,我的问题更具体:
例如,http://www.w3schools.com/jsref/jsref_obj_string.asp声明:
句法:
var txt = new String("string");
// or more simply:
var txt = "string";
Run Code Online (Sandbox Code Playgroud)
很好,但是这个呢?
alert(new String("a") == new String("a")); // false
alert("a" == "a"); // true
var a = new String("a");
var b = new String("a");
alert(a == b); // false
var c = "a";
var d = "a";
alert(c == d); // true
alert(c === d); // true
alert (a === c); // false
Run Code Online (Sandbox Code Playgroud)
当然,new String()无论如何都没有人打电话,但它是否因为平等失败而new String()被处理为一个对象而不是一个字符串?
当然,W3Schools并不是最值得信赖的来源,但我希望所有上述提醒都能说出来.
请解释.
sku*_*uro 12
"令人惊讶的结果"来自Javascript处理对象的相等性,以及字符串文字和String对象之间出现的混淆.从Mozilla的参考指南的==操作:
如果两个操作数的类型不同,则JavaScript转换操作数,然后应用严格比较.如果操作数是数字或布尔值,操作数将尽可能转换为数字; 否则,如果任一操作数是字符串,则另一个操作数将转换为字符串(如果可能).如果两个操作数都是对象,则JavaScript比较内部引用,当操作数引用内存中的同一对象时,这些内部引用相等.
您可以使用数字体验相同的行为:
new Number(5) == new Number(5) // false
Run Code Online (Sandbox Code Playgroud)
并通过以下方式澄清您的想法:
typeof "string" // string
typeof new String("string") // object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4398 次 |
| 最近记录: |