js隱式轉(zhuǎn)換的知識(shí)實(shí)例講解
開胃菜
[] == ![] //true ==> "" == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因?yàn)榇笥诘扔诘谋容^,不是相等的比較,所以[object Object] >=[object Object] [null] == "" //true ==> [""] == ""
值得注意的操作符:
一元操作符:通過Number()進(jìn)行轉(zhuǎn)換;其中包括*號(hào)運(yùn)算符,/號(hào)運(yùn)算符,都是經(jīng)Number()轉(zhuǎn)換
+undefined //NaN
邏輯運(yùn)算符:!等價(jià)于Boolean(),將操作數(shù)進(jìn)行布爾值類型轉(zhuǎn)換
位操作:~, |, &, ^;當(dāng)一邊操作數(shù)為NaN時(shí),可等價(jià)于操作數(shù)為0;
//由以下變化可以證得: NaN ^ NaN ^ NaN = 0
加號(hào)運(yùn)算符,比較復(fù)雜
優(yōu)先級(jí)最高的是字符串,任何操作數(shù)與字符串相加都將其String(x)成字符串,再進(jìn)行字符串拼接
console.log("a" + 1); //"a1" console.log("a" + "1"); //"a1" console.log("a" + false); //"afalse" console.log("a" + undefined); //"aundefined" console.log("a" + NaN); //"aNaN" console.log("a" + null); //"anull" console.log("a" + {}); //"a[object Object]"
其次number,而object在正常情況下輸出的就是string類型
//console.log(1 + "1"); //"11" console.log(1 + 1); //2 console.log(1 + true); //2 console.log(1 + undefined); //NaN console.log(1 + NaN); //NaN console.log(1 + null); //1 console.log(1 + {}); //"1[object,Object]"
當(dāng)一方為Boolean,或者兩方都是Boolean時(shí),都將其進(jìn)行Number處理,同理undefined與null也一樣
console.log(true + true); //2 console.log(true + undefined); //NaN console.log(true + NaN); //NaN console.log(true + null); //1 console.log((true + [NaN])); //"trueNaN"
減號(hào),則將兩邊都進(jìn)行Number()處理
比較運(yùn)算:==, >, <, >=, >=, != 遵循規(guī)則(摘自高程3):
1.null和undefined是相等的
2.要比較相等之前,不能將null和undfined轉(zhuǎn)換成其他任何值
3.如有一個(gè)操作數(shù)為NaN,相等操作符返回fasle,不相等操作符返回true, NaN不等于NaN
4.兩個(gè)對(duì)象之間的比較,兩者指向同一個(gè)對(duì)象(地址相同),相等操作符返回true,否則返回false
值得注意的是:對(duì)象間的>=與==(!=)比較方式是不同的,前者是toString()返回值的比較,后者是引用地址的比較
當(dāng)都是兩邊都是字符串時(shí),按字符編碼大小進(jìn)行比較
當(dāng)一方操作數(shù)為boolean,string,object,轉(zhuǎn)成number類型的數(shù)值再進(jìn)行比較;
console.log("NaN" == NaN); //false console.log(undefined == null); //true console.log({} >= {1:2}); //true console.log({1:2} != {}); //true console.log({} == {1:2}); //false console.log([1] == [1]); //false console.log(null == 0); //false
- 簡(jiǎn)單介紹JavaScript數(shù)據(jù)類型之隱式類型轉(zhuǎn)換
- 淺析JavaScript中的隱式類型轉(zhuǎn)換
- JavaScript隱式類型轉(zhuǎn)換
- JavaScript中運(yùn)算符規(guī)則和隱式類型轉(zhuǎn)換示例詳解
- 對(duì)存在JavaScript隱式類型轉(zhuǎn)換的四種情況的總結(jié)(必看篇)
- JS面試題大坑之隱式類型轉(zhuǎn)換實(shí)例代碼
- JavaScript強(qiáng)制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換操作示例
- 總結(jié)Javascript中的隱式類型轉(zhuǎn)換
- 基于javascript 顯式轉(zhuǎn)換與隱式轉(zhuǎn)換(詳解)
- JavaScript中的一些隱式轉(zhuǎn)換和總結(jié)(推薦)
- 跟我學(xué)習(xí)javascript的隱式強(qiáng)制轉(zhuǎn)換
- 有趣的JavaScript隱式類型轉(zhuǎn)換操作實(shí)例分析
相關(guān)文章
JavaScript與C# Windows應(yīng)用程序交互方法
JavaScript與C# Windows應(yīng)用程序交互方法...2007-06-06JavaScript forEach中return失效問題解決方案
這篇文章主要介紹了JavaScript forEach中return失效問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06HTML Table 空白單元格補(bǔ)全的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄狧TML Table 空白單元格補(bǔ)全的簡(jiǎn)單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10在網(wǎng)頁中使用document.write時(shí)遭遇的奇怪問題
很多時(shí)候我們都會(huì)在網(wǎng)頁上的JavaScript中使用document.write來寫入一些東西,有的時(shí)候可能因?yàn)槲覀儫o法改變某一部分HTML而不得不使用這樣的辦法,也有的時(shí)候是因?yàn)樵谶M(jìn)行跨應(yīng)用的腳本調(diào)用。2010-08-08JavaScript網(wǎng)絡(luò)請(qǐng)求工具庫axios使用實(shí)例探索
這篇文章主要為大家介紹了JavaScript網(wǎng)絡(luò)請(qǐng)求工具庫axios使用實(shí)例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01微信小程序開發(fā)中Promise的使用(aysnc,await)及場(chǎng)景分析
在微信小程序開發(fā)中,錯(cuò)誤使用Promise可能導(dǎo)致無法正確獲取數(shù)據(jù),本文分析了一個(gè)常見錯(cuò)誤場(chǎng)景,即在異步函數(shù)中未使用await或.then()處理Promise,導(dǎo)致無法獲取異步操作的返回結(jié)果,文章提供了使用await和鏈?zhǔn)秸{(diào)用.then()的解決方法,幫助開發(fā)者避免類似錯(cuò)誤,確保數(shù)據(jù)正確返回2024-10-10