- 当进行-(减)、*(乘)、/(除)、取余(%)操作时,如果有不是数值的操作数,则先在后台使用Number()函数将其转换为数值。
(特殊:Number([x])=x; 而Number({})、Number([x,y],...)为NaN)
<script>
console.log('Number(null):', Number(null));
//Number(null): 0
console.log('Number(undefined):', Number(undefined));
//Number(undefined): NaN
- 当进行+(加)操作时,如果任一操作数是对象、数值、布尔值则调用它们自身的toString()方法;
对于undefined和null则调用String()函数,将其转换为'undefined'和'null'
console.log('String(null):', String(null), typeof String(null));
//String(null): null string
console.log('String(undefined):', String(undefined), typeof String(undefined));
//String(undefined): undefined string
</script>
- 当进行==操作符时,遇到undefined和null不会转换类型。对于其它类型可能经历(valueOf、toString、Number方法最后比较数值;如果两个数是对象则比较是否是同一个对象)