js

js 运算时数据类型转化, == 和 ===

2020-07-13  本文已影响0人  书虫和泰迪熊

只有加法运算会把运算子转换成字符串,其他运算都自动转化成数值
大小比较时会先转化成数字类型再进行比较
一元运算符也会把运算子转成数值

'a' + 1   // 'a1'
'a' - 1    // NaN
true +5 //6
false + 5 //5
1>2>3   // false
3>2>1   // true
+'1'+1   // 2
+'s'+2   // NaN
's' + null  //'snull'
's' + undefined // 'sundefined'
1 + true + undefined + 's' // 1+1+NaN+'s'=2+NaN+'s'=NaN+'s'=NaNs

运算符 == 和 === 比较
==是抽象相等运算符,而===是严格相等运算符。==运算符是在进行必要的类型转换后,再比较。===运算符不会进行类型转换,所以如果两个值不是相同的类型,会直接返回false。
使用==时,可能发生一些特别的事情,例如:

1 == '1'; // true
1 == [1]; // true
1 == true; // true
0 == ''; // true
0 == '0'; // true
0 == false; // true
new Number(2) == 2  //true
new Number(2) === 2 // false   左边是Number类型本质是对象Object,右边是number 类型是基本类型

[] == ![] // true
{} == !{} // false
https://blog.csdn.net/magic_xiang/article/details/83686224

上一篇 下一篇

猜你喜欢

热点阅读