JavaScript隱式轉換與顯示轉換

JavaScript是一門弱類型語言,其靈活的設計初衷也帶來了隱式轉換的弊端;下面是對js數據類型轉換的梳理es6

首先得知道js的數據類型6種基本數據類型與object設計

6種基本數據類型(含es6):nullundefinedstringnumberbooleansymbol(es6新增)

轉換場景

基本數據類型的轉換(不含symbol)

  • 算數運算符(如+-*/等等)的隱式轉換:會將非number轉換成number;注意,當+有一邊爲string時,+屬於字符串鏈接符;其餘數據類型轉number的規則(此規則屬於ecma標準,須要記憶):
原數據類型 轉換成number後的結果
number number
string 純數字的字符串會轉成對應數字,含非數字的會轉換成NaN
null 0
undefined NaN
boolean true => 1; false => 0
  • 其餘非邏輯運算符(如==+>=)的隱式轉換: 當有一邊含有string時,會將非string的轉成字符串來處理;其餘數據類型轉字符串的規則(此規則屬於ecma標準,須要記憶):
原數據類型 轉換成string後的結果
number 數字對應的string
null 'null'
undefined 'undefined'
boolean true => 'true'; false => 'false'
注意:不含symbol是由於symbol不能轉換

非基本數據類型的轉換

  • 非基本數據類型的對象會調用對應的轉換方法來轉換成基本數據類型,通常都會有valueOf與toString;若是轉換方法的返回值爲基本數據類型,則會拿此基本數據類型走基本數據類型轉換的邏輯;若是兩個方法都沒有或者都沒能轉換成基本數據類型,則轉換失敗
  • Date會先調用toString,其餘的會先調用valueOf
注意:兩邊都是對象時 ==運算符比較的是對象內存地址,
相關文章
相關標籤/搜索