JS 中的!=、== 、!==、=== 的用法和区别
在 JS 中 "==" 和 "===" 是都存在的,他们都是判断两端的表达式是否相同,但是有一点不一样。
因为在 JAVA 和 C 这中强类型语言中,每一个变量使用前都得必须先被声明并且指定类型,所以说变量和变量之间的类型是否相等,就不需要开发者去判断了,编译器就可以完成此任务,但是像 JS 这个弱语言,我可以突然半路冒出个 abc 变量,而这个变量又不用提前声明,而且可以存放任意类型的的值,这就比较变态了,所以说两个变量进行比较的时候,由于 JS 的特性,是可以考虑先比较类型,再比较值的,这就是 "===" 的作用,详情如下:
"==" 就代表会先把两端的变量试图转换成相同类型,然后再比较;"===" 就代表会直接去比较类型是否相同,如果类型相同则继续比较值是否相同。
举个例子:
当 Integer 的 1 和 String 的 "1", 进行 == 比较的时候, 两端的变量会先转换成相同类型,再去进行值得比较,有点 JAVA 里面的 equals 的意思;当进行 === 进行比较的时候,两端的变量会先进行类型之间的比较,
如果类型不相等,直接返回 false。
再举个例子:
当比较的两个对象是 Object 类型的时候,== 和 === 的效果是一样的,因为两个不同对象之间的值是无法直接进行比较的,也是无法相互转换的,So,两个比较全为 false.
== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。
而
=== 和 !== 只有在相同类型下, 才会比较其值。
<script type="text/javascript" src="jquery-3.2.1.js"></script>
<script type="text/javascript">
$(function () {
var v=1;
var v1='1';
var v2=1;
var v3=3;
alert("这是类型不同的");
alert(v==v1) --true //判断值是否相等
alert(v!=v1) --false
alert(v===v1) --false //判断类型是否相等
alert(v!==v1) --true
alert(v=v3) --3 //赋值
alert("这是类型相同的");
alert(v==v2) --true //判断值是否相等
alert(v!=v2) --false
alert(v===v2) --true //判断类型是否相等
alert(v!==v2) --false
alert(v=v3) --3 //赋值
})
</script>