toPrimitive方法對於不同類型的返回結果
1基本類型直接返回,基本類型的值
2對象, a如果對象的ValueOf方法的結果是原始值,返回原始值。
b如果對象的toString方法返回原始值,就返回這個值;
其他情況都返回一個錯誤
用例子來驗證一下結果,首先我們知道下面的代碼輸出true(字符串長度大於1);
console.log('packet'?true:false)
那么這行代碼結果呢?
console.log('packet' == true)
輸出是false,為什么會這樣呢?
1首先,布爾值會被toNumber方法轉成數字,因此得到packet == 1
2其次,用toNumber轉換字符串。因為字符串包含有字母,所以會轉成NaN,
表達式就變成了NaN == 1,結果就是false.
那么這行代碼的結果呢?
console.log('packet' == false)
輸出也是false.步