console.log(([])?true:false); console.log(([]==false?true:false)); console.log(({}==false)?true:false)


下面是題目的類型轉換結果:

Boolean([]); //true
Number([]); //0
Number({}); // NaN
Number(false); //0

因此:

console.log(([])?true:fasle);// => console.log((true)?true:false);
console.log([]==false?true:false); // => console.log(0==0?true:false);
console.log(({}==false)?true:false); // => console.log((NaN==0)?true:false);

《JavaScript權威指南》的部分相關知識點


“==”運算符(兩個操作數的類型不相同時)

  • 如果一個值是null,另一個值是undefined,則它們相等
  • 如果一個值是數字,另一個值是字符串,先將字符串轉換為數學,然后使用轉換后的值進行比較。
  • 如果其中一個值是true,則將其轉換為1再進行比較。如果其中的一個值是false,則將其轉換為0再進行比較。
  • 如果一個值是對象,另一個值是數字或字符串,則將對象轉換為原始值,再進行比較。

對象到數字的轉換

  • 如果對象具有valueOf()方法,后者返回一個原始值,則JavaScript將這個原始值轉換為數字(如果需要的話)並返回一個數字。
  • 否則,如果對象具有toString()方法,后者返回一個原始值,則JavaScript將其轉換並返回。(對象的toString()方法返回一個字符串直接量(作者所說的原始值),JavaScript將這個字符串轉換為數字類型,並返回這個數字)。
  • 否則,JavaScript拋出一個類型錯誤異常。

空數組轉換為數字0

  • 數組繼承了默認的valueOf()方法,這個方法返回一個對象而不是一個原始值,因此,數組到數學的轉換則調用toString()方法。空數組轉換為空字符串,空字符串轉換為數字0.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM