js中的隱式類型轉換

一、基本類型 :

(1)加號運算符

存在加號運算符的時候,其他類型都會轉為 String

(2)其他運算符

存在運算符(-,*,/,%)時, 基本類型都轉換為 Number

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

如果一個值是null,另一個值是undefined,則它們相等

如果一個值是數(shù)字,另一個值是字符串,先將字符串轉換為數(shù)字,然后使用轉換后的值進行比較

如果其中一個值是true,則將其轉換為1再進行比較。如果其中的一個值是false,則將其轉換為0再進行比較

如果一個值是對象,另一個值是數(shù)字或字符串,則將對象轉換為原始值,再進行比較

(4)注意

undefined轉化為Number是 為’NaN‘

String類型的帶有字符的比如: '1a' ,'a1' 轉化為 Number是 為’NaN‘

任何Number與NaN相加都為NaN

NaN 不與 任何值相等 包括自身,所以判斷一個值 是否為 NaN, 即用 "!==" 即可

轉換為 Boolean類型為 false 的有:null,0,'',undefined,NaN,false

number() 與 parseInt() 都可以將對象轉化為Number類型,Number函數(shù)要比parseInt函數(shù)嚴格很多?;旧希灰幸粋€字符無法轉成數(shù)值,整個字符串就會被轉為NaN。

二、object類型

(1)當object與基本類型運算時:

Number類型會先調用valueOf(), String類型會先調用toString(), 如果結果是原始值,則返回原始值,否則繼續(xù)用toString 或 valueOf(),繼續(xù)計算,如果結果還不是原始值,則拋出一個類型錯誤;

為什么 {} + [] = 0 ? 因為 javascript在運行時, 將 第一次{} 認為是空的代碼塊,所以就相當于 +[] = 0. 還有 {} +5 = 5, 同理

三、練習

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);

分析:

Boolean([]); //true
Number([]); //0
Number({}); // NaN
Number(false); //0
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容