js == 和===(全等) 的区别

==非严格判断,只判断数值,不判断类型

1、同类型两个变量比较,直接进行比较

2、不同类型两个变量比较,先进行类型转换,再比较

某些转换规则

如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 
如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 
如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核 心内置类,会尝试valueOf先于toString;

例外的是Date,Date的toString优先级高于valueOf。

自定义对象
 

var x = {
    toString: function () { return "foo"; },
    valueOf: function () { return 42; }
};

alert(x); // foo
"x=" + x; // "x=42"
x + "=x"; // "42=x"
x + "1"; // 421
x + 1; // 43
["x=", x].join(""); // "x=foo"

可以看到+时,和上面的结论一样,但是alert , [x].join(“”)等这类特殊的表达,均调用toString(),当作特例记住就行了


=== 严格全等判断,类型,数值全判断

1、如果类型不同,直接返回false

如 1 === "1" // false

1===1// true

2、类型相同,则进行值比较

猜你喜欢

转载自blog.csdn.net/gzyzwx/article/details/82594964