对于string,number等基础类型,==和===是有区别的,进行“数据类型”比较
Array,Object等高级类型,==和===是没有区别的,进行“指针地址”比较
JavaScript 是弱类型语言,这就意味着,等于操作符==会为了比较两个值而进行强制类型转换。
var str = "1";
var numb = 1;
str == numb; //true
str === numb; //false
false == "0" // true
false ==="0" // false
虽然都是等于操作符,但是当其中有一个操作数为对象时,行为就不同了:
比较的不是值是否相等,而是是否属于同一个身份;也就是说,只有对象的同一个实例才被认为是相等的。
结论:推荐使用严格等于操作符。如果类型需要转换,应该在比较之前显式的转换, 而不是使用语言本身复杂的强制转换规则。