js:那些容易被我們忽略的隱式轉換

強制轉換

Number、String和Boolean三個函數

其他的數據類型轉換爲String

  1. toString()方法
  2. String()函數

其他的數據類型轉換爲Number

  1. parseInt() & parseFloat()
  2. Number()

兩者的區別:Number更嚴格,parseInt可以自動將裏面的字符串過濾。

其他的數據類型轉換爲Boolean

只有空字符串("")、null、undefined、+0、-0 和 NaN 轉爲布爾型是 false,其他的都是 true,空數組、空對象轉換爲布爾類型也是 true,甚至連false對應的布爾對象new Boolean(false)也是true

Boolean(undefined) // false

自動轉換

自動轉換爲布爾值

if ('abc') {
  console.log('hello')
}  // "hello"

自動轉換爲數值

算數運算符(+ - * /)跟非Number類型的值進行運算時,會將這些值轉換爲Number,然後在運算,除了字符串的加法運算

true + 1 // 2
2 + null // 2
undefined + 1 // NaN
2 + NaN // NaN 任何值和NaN做運算都得NaN
'5' - '2' // 3
'5' * '2' // 10
true - 1  // 0
'1' - 1   // 0
'5' * []    // 0
false / '5' // 0
'abc' - 1   // NaN

自動轉換爲字符串

字符串的自動轉換,主要發生在字符串的加法運算時。當一個值爲字符串,另一個值爲非字符串,則後者轉爲字符串。

'5' + 1 // '51'
'5' + true // "5true"
'5' + false // "5false"
'5' + {} // "5[object Object]"
'5' + [] // "5"
'5' + function (){} // "5function (){}"
'5' + undefined // "5undefined"
'5' + null // "5null"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章