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>