JS中的"="、"=="、"==="

Equality Operator in Javascript

 Ling Lin     2017-04-20   834 words    & views

在JS中常会用到=,==,===,等会儿,是不是已经看晕了,不都是等于号吗?难道还有什么区别?还真有,而且是大大的区别,这个一定得弄清楚。


  • "=": 赋值
var a = 5; // 定义一个变量a,将5 赋值给a
console.log(a);//输出的值是5
  • "==": 等于(Equality),返回一个布尔值true or false
 1 == 1 // true;
 1 == "1" // true;
 1 == 2 // false;
 "3" == 3 // true;
 "1" == true // true;
 "0" == false // true;

解释:当两边值类型不同的时候,比如1 == "1"左边是数字类型,右边是字符串,会先进行类型转换,再比较,那么1 == 1 就是true。再比如"1" = true 类型不同,true会转换成数值 1,变成 "1" == 1,再将”1”转换成 1,1 == 1,也是true。

  • "===": 严格等于(Strict Equality),判断两边元素的类型type与值value
3 === 3   // true;
3 === '3' // false;
3 === 2 // false;

解释:===,比== 判断更加严格,第一行左边右边都是数字类型都是3,所以是true。第二行,左边是数字类型,右边是字符串类型,即使值相等,也是false。

总结

  1. = 是赋值运算符
  2. == 会做类型转换
  3. === 类型不同一定不等,返回false

注意:

== 和 === 不能被用来判断一个值是否是 NaN,也就是说只有NaN,比较之中不等于它自己。在一般情况下,本身等于本身都是true, 切记NaN是一个例外。

1 == 1 // true;
true == true // true;
null === null // true;
NaN == NaN // false;
NaN === NaN // false;