JS不同運(yùn)算符下隱式類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)示例
js是動(dòng)態(tài)類(lèi)型語(yǔ)言也稱(chēng)弱類(lèi)型,在編寫(xiě)代碼時(shí),即在做計(jì)算的值類(lèi)型不一樣會(huì)做隱式類(lè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'
運(yùn)算符
邏輯運(yùn)算符(&&、||、!)和 條件表達(dá)式(if、三元表達(dá)式)
邏輯運(yùn)算符和條件表達(dá)式會(huì)將值隱式轉(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
邏輯運(yùn)算符
console.log(1 && 2) // 隱式轉(zhuǎn)換 Boolean(1) && Boolean(2) //如果都為true則返回最后為true的值,如果有一個(gè)false則返回false, 輸出2 console.log(1 || false) // Boolean(1) && false //返回第一個(gè)隱式轉(zhuǎn)換為true的值, 輸出1 console.log(!3) // !Boolean(3) //將3隱式轉(zhuǎn)換成Boolean類(lèi)型的值再取反,輸出false
條件表達(dá)式
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ù)運(yùn)算符(*、/、- %、+)和 關(guān)系運(yùn)算符(>、<、==、!=)
算數(shù)運(yùn)算符和條件表達(dá)式會(huì)將值隱式轉(zhuǎn)換成Number,但是+法運(yùn)算符有些特殊的規(guī)則
轉(zhuǎn)換規(guī)則
基本數(shù)據(jù)類(lèi)型的值轉(zhuǎn)Number
- Number(1) // 1
- Number('1') // 1
- Number(true) // 1
- Number(null) // 0
- Number(undefined) // NaN
- Number(NaN) // NaN
- Number(Symbol(1)) // 報(bào)錯(cuò)
復(fù)雜數(shù)據(jù)類(lèi)型轉(zhuǎn)Number
const obj = { valueOf: function() { return 42; } };
- Number({}) // NaN
- Number([1]) // 1
- Number(obj) // 42
1:js會(huì)判斷該值的原始值(valueOf)是不是基本數(shù)據(jù)類(lèi)型,如果是,轉(zhuǎn)換其為Number,如果不是則按如下轉(zhuǎn)換規(guī)則。
2: 將Object轉(zhuǎn)換成String,再轉(zhuǎn)換成Number。
算數(shù)運(yùn)算符
+法運(yùn)算符
運(yùn)算結(jié)果要不是數(shù)字,要不是字符串,要不是NaN
做+法運(yùn)算的時(shí)候,當(dāng)任何非String類(lèi)型值和String做運(yùn)算,則會(huì)將其轉(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,此時(shí)變成了 1 + '1',做字符串拼接'11'
-、*、/、%法運(yùn)算符
運(yùn)算結(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
關(guān)系運(yùn)算符
運(yùn)算結(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
到此這篇關(guān)于JS不同運(yùn)算符下隱式類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)JS 隱式類(lèi)型轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺析JavaScript中的隱式類(lèi)型轉(zhuǎn)換
- JavaScript隱式類(lèi)型轉(zhuǎn)換
- 總結(jié)Javascript中的隱式類(lèi)型轉(zhuǎn)換
- 對(duì)存在JavaScript隱式類(lèi)型轉(zhuǎn)換的四種情況的總結(jié)(必看篇)
- JavaScript中運(yùn)算符規(guī)則和隱式類(lèi)型轉(zhuǎn)換示例詳解
- JS面試題大坑之隱式類(lèi)型轉(zhuǎn)換實(shí)例代碼
- 有趣的JavaScript隱式類(lèi)型轉(zhuǎn)換操作實(shí)例分析
- JavaScript隱式類(lèi)型轉(zhuǎn)換代碼實(shí)例
- JavaScript隱式類(lèi)型轉(zhuǎn)換例子總結(jié)
- 淺析JavaScript中的隱式類(lèi)型轉(zhuǎn)換
- JavaScript 隱式類(lèi)型轉(zhuǎn)換規(guī)則詳解
相關(guān)文章
深入理解移動(dòng)前端開(kāi)發(fā)之viewport
這篇文章主要介紹了移動(dòng)前端開(kāi)發(fā)之viewport的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10微信小程序?qū)崿F(xiàn)評(píng)價(jià)功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)評(píng)價(jià)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08JavaScript實(shí)現(xiàn)簡(jiǎn)單的日歷效果
本文給大家分享的是一個(gè)簡(jiǎn)單的JavaScript制作的日歷模板,小伙伴們可以根據(jù)自己的需求,繼續(xù)補(bǔ)充,希望大家能夠喜歡2016-09-09淺談?dòng)肳ebpack路徑壓縮圖片上傳尺寸獲取的問(wèn)題
下面小編就為大家分享一篇淺談?dòng)肳ebpack路徑壓縮圖片上傳尺寸獲取的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02Bootstrap 表單驗(yàn)證formValidation 實(shí)現(xiàn)表單動(dòng)態(tài)驗(yàn)證功能
這篇文章主要介紹了Bootstrap 表單驗(yàn)證formValidation 實(shí)現(xiàn)表單動(dòng)態(tài)驗(yàn)證功能,需要的朋友可以參考下2017-05-05