1.21 null、undefined运算时进行的隐式转换

  • 当进行-(减)、*(乘)、/(除)、取余(%)操作时,如果有不是数值的操作数,则先在后台使用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方法最后比较数值;如果两个数是对象则比较是否是同一个对象)
posted @ 2021-01-21 13:06  17135131xjt  阅读(478)  评论(0编辑  收藏  举报