Javascript支持“=”,“==”和“===”运算符,它们分别表明赋值,相等,恒等(严格相等)下面来看下它们具体的区别!数组
1.赋值“=”
// 当出现一个“=”时,表示赋值操做
var number = 6;
const name = “Tom”;
复制代码
2.相等运算符“==”
相等运算符的比较并不严格,若是两个操做数不是同一类型,那么相等运算符会尝试进行一些类型转换(隐式转换),而后进行比较:spa
一,若是两个操做数的类型相同,那 么比较结果为相等;code
二,若是两个操做数类型不一样,“==”相等操做符 也可能会认为它们相等,检测相等将会遵照以下 规则和类型转换;对象
- 若是一个值是null,另外一个是undefined,则 它们相等;
- 若是一个值是数字,另外一个是字符串,先将字符串转换为数字,而后使用转换后的值进行 比较;
- 若是其中一个值是true,则将其转换为1再 进行比较。若是其中一个值是false,则将其转换 为0再进行比较;
- 若是一个值是对象,另外一个值是数字或字符串,则将对象转 换为原始值,而后再进行比较;
- 其余不一样类型之间的比较均不相等;
"1"==true
复制代码
3.相等运算符“===”
严格相等运算符“===”,首先计算其操做数的值,而后比较这两个值,比较过程没有任何类型转换:ip
- 若是两个值类型不相同,则它们不相等;
- 若是两个值都是null或者都是undefined,则它们相等;
- 若是两个值都是布尔值true或都是布尔值 false,则它们相等;
- 若是其中一个值是NaN,或者两个值都是 NaN,则它们不相等。NaN和其余任何值都是不 相等的,包括它自己;
- 若是两个值为数字且数值相等,则它们相等。若是一个值为0,另外一个值为-0,则它们一样相等;
- 若是两个值为字符串,它们的长度或内容相同,则它们相等;
- 若是两个引用值指向同一个对象、数组或函 数,则它们是相等的。若是指向不一样的对象,则 它们是不等的,尽管两个对象具备彻底同样的属性;