JS不同運算符下隱式類型轉(zhuǎn)換的實現(xiàn)示例
js是動態(tài)類型語言也稱弱類型,在編寫代碼時,即在做計算的值類型不一樣會做隱式類型轉(zhuǎn)換。
console.log(1 + '2') // '12' console.log('1' == true) // true console.log('1' == 1) // true console.log(true && 2) // 2 console.log(undefined == null) // true console.log('3' * 2) // 6 console.log([1] + 1) // '11'
運算符
邏輯運算符(&&、||、!)和 條件表達式(if、三元表達式)
邏輯運算符和條件表達式會將值隱式轉(zhuǎn)換成Boolean
轉(zhuǎn)Boolean
- Boolean(1) // true
- Boolean('1') // true
- Boolean(true) // true
- Boolean(null) // false
- Boolean(undefined) // false
- Boolean([]) // true
- Boolean({}) // true
- Boolean(NaN) // false
邏輯運算符
console.log(1 && 2) // 隱式轉(zhuǎn)換 Boolean(1) && Boolean(2) //如果都為true則返回最后為true的值,如果有一個false則返回false, 輸出2 console.log(1 || false) // Boolean(1) && false //返回第一個隱式轉(zhuǎn)換為true的值, 輸出1 console.log(!3) // !Boolean(3) //將3隱式轉(zhuǎn)換成Boolean類型的值再取反,輸出false
條件表達式
if(3) // 隱式轉(zhuǎn)換 Boolean(3) if(undefined) // Boolean(undefined) if(null) // Boolean(null) 3 ? 2 : 1 // Boolean(3), 為true, 輸出2 4 && undefined ? 2 : 1 // Boolean(undefined), 為true 輸出1
算數(shù)運算符(*、/、- %、+)和 關系運算符(>、<、==、!=)
算數(shù)運算符和條件表達式會將值隱式轉(zhuǎn)換成Number,但是+法運算符有些特殊的規(guī)則
轉(zhuǎn)換規(guī)則
基本數(shù)據(jù)類型的值轉(zhuǎn)Number
- Number(1) // 1
- Number('1') // 1
- Number(true) // 1
- Number(null) // 0
- Number(undefined) // NaN
- Number(NaN) // NaN
- Number(Symbol(1)) // 報錯
復雜數(shù)據(jù)類型轉(zhuǎn)Number
const obj = { valueOf: function() { return 42; } };
- Number({}) // NaN
- Number([1]) // 1
- Number(obj) // 42
1:js會判斷該值的原始值(valueOf)是不是基本數(shù)據(jù)類型,如果是,轉(zhuǎn)換其為Number,如果不是則按如下轉(zhuǎn)換規(guī)則。
2: 將Object轉(zhuǎn)換成String,再轉(zhuǎn)換成Number。
算數(shù)運算符
+法運算符
運算結(jié)果要不是數(shù)字,要不是字符串,要不是NaN
做+法運算的時候,當任何非String類型值和String做運算,則會將其轉(zhuǎn)換成String,再拼接字符串
console.log(1 + 1) // 2 console.log(1 + true) // 2 console.log(1 + false) // 1 console.log(true + false) // 1 console.log(1 + '1') // '11' console.log(1 + undefined) // NaN console.log([1] + '1') // '11',先將[1]轉(zhuǎn)換成數(shù)字1,此時變成了 1 + '1',做字符串拼接'11'
-、*、/、%法運算符
運算結(jié)果要不是數(shù)字,要不是NaN
console.log(1 * 1) // 1 console.log(1 - true) // 0 console.log([2] * '1') // 2 console.log([2] / '1') // 2 console.log([2] % '1') // 0 console.log([2] * '1a') // NaN
關系運算符
運算結(jié)果總是布爾
console.log(1 == 1) // true console.log(1 == true) // true console.log(1 == false) // false console.log(true == false) // false console.log(['32'] > 22) // true console.log(NaN == NaN) // flase
到此這篇關于JS不同運算符下隱式類型轉(zhuǎn)換的實現(xiàn)示例的文章就介紹到這了,更多相關JS 隱式類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 淺析JavaScript中的隱式類型轉(zhuǎn)換
- JavaScript隱式類型轉(zhuǎn)換
- 總結(jié)Javascript中的隱式類型轉(zhuǎn)換
- 對存在JavaScript隱式類型轉(zhuǎn)換的四種情況的總結(jié)(必看篇)
- JavaScript中運算符規(guī)則和隱式類型轉(zhuǎn)換示例詳解
- JS面試題大坑之隱式類型轉(zhuǎn)換實例代碼
- 有趣的JavaScript隱式類型轉(zhuǎn)換操作實例分析
- JavaScript隱式類型轉(zhuǎn)換代碼實例
- JavaScript隱式類型轉(zhuǎn)換例子總結(jié)
- 淺析JavaScript中的隱式類型轉(zhuǎn)換
- JavaScript 隱式類型轉(zhuǎn)換規(guī)則詳解
相關文章
Bootstrap 表單驗證formValidation 實現(xiàn)表單動態(tài)驗證功能
這篇文章主要介紹了Bootstrap 表單驗證formValidation 實現(xiàn)表單動態(tài)驗證功能,需要的朋友可以參考下2017-05-05