1.21 null、undefined運算時進行的隱式轉換
阿新 • • 發佈:2021-01-21
- 當進行-(減)、*(乘)、/(除)、取餘(%)操作時,如果有不是數值的運算元,則先在後臺使用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方法最後比較數值;如果兩個數是物件則比較是否是同一個物件)