JS強制型別轉換和自動型別轉換

2020-07-16 10:05:03

強制型別轉換

JavaScript 支援使用以下函數進行強制型別轉換。
  • Boolean(value):把引數值轉換為布林型值。
  • Number(value):把引數值轉換為數位。
  • String(value):把引數值轉換為字串。

在下面程式碼中,分別呼叫上述 3 個函數,把引數值強制轉換為新的型別值。
console.log(String(true));  //返回字串"true"
console.log(String(0));  //返回字串"0"
console.log(Number("1"));  //返回數值1
console.log(Number(true));  //返回數值1
console.log(Number("a"));  //返回NaN
console.log(Boolean(1));  //返回true
console.log(Boolean(""));  //返回false

注意:

  • true 被強制轉換為數值 1,false 被強制轉換為數值 0,而使用 parseInt() 方法轉換時,都返回 NaN。
console.log(Number(true));  //返回1
console.log(Number(false));  //返回0
console.log(parseInt(true));  //返回NaN
console.log(parseInt(false));  //返回NaN
  • 當值包括至少一個字元的字串、非 0 數位或物件時,Boolean() 強制轉換後都會返回 true。
  • 如果值是空字串、數位 0、undefined 或 null,Boolean() 強制轉換後都會返回true。
  • Number() 強制轉換與 parseInt() 和 parseFloat() 方法的處理方式不同,Number() 轉換的是整體,而不是區域性值。
console.log(Number("123abc"));  //返回NaN
console.log(Number("123abc"));  //返回數值123
  • String() 能夠把 null 和 undefined 強制轉換為對應字串,而呼叫 toString() 方法將引發錯誤。
console.log(String(null));
console.log(String(undefined));
console.log(null.toString());
console.log(undefined.toString());

在 JavaScript 中,使用強制型別轉換非常有用,但是應該根據具體應用場景使用,以確保正確轉換值。

自動型別轉換

JavaScript 能夠根據具體運算環境自動轉換參與運算的值得型別。下面簡單介紹常用值在不同運算環境中被自動轉換的值列表。

資料型別自動轉換列表
值(value) 字串操作環境 數位運算環境 邏輯運算環境 物件操作環境
undefined "undefined" NaN false Error
null "null" 0 false Error
非空字串 不轉換 字串對應的數位值NaN true String
空字串 不轉換 0 false String
0 "0" 不轉換 false Number
NaN "NaN" 不轉換 false Number
Infinity "Infinity" 不轉換 true Number
Number.POSITIVE_INFINITY "Infinity" 不轉換 true Number
Number.NEGATIVE_INFINITY "-Infinity" 不轉換 true Number
-Infinity "-Infinity" 不轉換 true Number
Number.MAX_VALUE "1.7976931348623157e+308" 不轉換 true Number
Number.MIN_VALUE "5e-324" 不轉換 true Number
其他所有數位 "數位的字串值" 不轉換 true Number
true "true" 1 不轉換 Boolean
false "false" 0 不轉換 Boolean
物件 toString() valueOf() 或 toString() 或 NaN true 不轉換