javascript的=,==,===
很多语言都有三个等号的类别,如=,==,===
在js中很多时候,我们会听到别人推荐我们使用严格相等,而不是去使用双等号,为什么?首先我们要了解什么是==,什么是===(=号位赋值。。。我就不说了。。)
1. "=="表示:equality ->等同的意思,"=="使用两个等号时,如果两边值的类型不同的时候,是要先先进行类型转换后,才能做比较。
2. "==="表示:identity ->恒等 的意思,"==="使用三个等号时,是不需要做类型转换的,如果两边值的类型不同,就表示一定是不等的。
看起来很简单,对吧,js在验证是否相等的时候,会根据他的类别,还有值去判断,下面几个代码可以证明:
var a1 ="";
vara2 = 0;
vara3 = false;
console.log("111111111111111111111111111以下是原始的typeof")
console.log(typeofa1);
console.log(typeofa2);
console.log(typeofa3);
console.log("111111111111111111111111111以下是原始的value")
console.log(a1.valueOf());
console.log(a2.valueOf());
console.log(a3.valueOf());
console.log("222222222222222222222222222开始操作");
console.log(a1=== a2);
console.log(a1== a2);
console.log(a2== a3);
console.log(a3== a1);
console.log("3333333333333333333333333333打印操作后的typeof")
console.log(typeofa1);
console.log(typeofa2);
console.log(typeofa3);
console.log("3333333333333333333333333333333以下是操作后的value")
console.log(a1.valueOf());
console.log(a2.valueOf());
console.log(a3.valueOf());
验证结果就不给了,注意看,在代码中我提及到了一个value(还有一个tostring我没提到)
为什么“双等号会造成类型转换”?
这是因为==在判断时候,会经行类型转换。所以很多网友都建议使用====,而不要使用==,但是请不要直接就此放弃他,因为他也可以经行隐形转换。
但是。。这也是有条件的,时间有限,下个博客再讲