运算符中“=”,“==”,“===”的区别

1,495 阅读2分钟

Javascript支持“=”,“==”和“===”运算符,它们分别代表赋值,相等,恒等(严格相等)下面来看下它们具体的区别!

1.赋值“=”

// 当出现一个“=”时,表示赋值操作
var number = 6;
const name = “Tom”;

2.相等运算符“==”

相等运算符的比较并不严格,如果两个操作数不是同一类型,那么相等运算符会尝试进行一些类型转换(隐式转换),然后进行比较:

一,如果两个操作数的类型相同,那 么比较结果为相等;

二,如果两个操作数类型不同,“==”相等操作符 也可能会认为它们相等,检测相等将会遵守如下 规则和类型转换;

  • 如果一个值是null,另一个是undefined,则 它们相等;
  • 如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行 比较;
  • 如果其中一个值是true,则将其转换为1再 进行比较。如果其中一个值是false,则将其转换 为0再进行比较;
  • 如果一个值是对象,另一个值是数字或字符串,则将对象转 换为原始值,然后再进行比较;
  • 其他不同类型之间的比较均不相等;
"1"==true  // true

3.相等运算符“===”

严格相等运算符“===”,首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换:

  • 如果两个值类型不相同,则它们不相等;
  • 如果两个值都是null或者都是undefined,则它们相等;
  • 如果两个值都是布尔值true或都是布尔值 false,则它们相等;
  • 如果其中一个值是NaN,或者两个值都是 NaN,则它们不相等。NaN和其他任何值都是不 相等的,包括它本身;
  • 如果两个值为数字且数值相等,则它们相等。如果一个值为0,另一个值为-0,则它们同样相等;
  • 如果两个值为字符串,它们的长度或内容相同,则它们相等;
  • 如果两个引用值指向同一个对象、数组或函 数,则它们是相等的。如果指向不同的对象,则 它们是不等的,尽管两个对象具有完全一样的属性;