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

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

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

所以:java

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再進行比較。
  • 若是一個值是對象,另外一個值是數字或字符串,則將對象轉換爲原始值,再進行比較。

對象到數字的轉換code

  • 若是對象具備valueOf()方法,後者返回一個原始值,則JavaScript將這個原始值轉換爲數字(若是須要的話)並返回一個數字。
  • 不然,若是對象具備toString()方法,後者返回一個原始值,則JavaScript將其轉換並返回。(對象的toString()方法返回一個字符串直接量(做者所說的原始值),JavaScript將這個字符串轉換爲數字類型,並返回這個數字)。
  • 不然,JavaScript拋出一個類型錯誤異常。

空數組轉換爲數字0對象

  • 數組繼承了默認的valueOf()方法,這個方法返回一個對象而不是一個原始值,所以,數組到數學的轉換則調用toString()方法。空數組轉換爲空字符串,空字符串轉換爲數字0.
相關文章
相關標籤/搜索