隱式類型轉(zhuǎn)換的觸發(fā)場景

何為隱式類型轉(zhuǎn)換

????????在認識js的過程中因為總是會在突然的一個知識點中蹦出一個隱式類型轉(zhuǎn)換,雖說在當時可以清楚地理解,但在后面學習其他知識,卻會逐漸淡忘,所以我把自己接觸到的一些會觸發(fā)隱式類型轉(zhuǎn)換的場景做一些總結。

????????????????????觸發(fā)隱式轉(zhuǎn)換觸發(fā)場景一、算術運算符+ - * / %

在此場景之下又可以分為兩類不同的隱式轉(zhuǎn)換

1.+運算符

?例:


圖一
圖二

圖一所示,兩個字符相加,不會實現(xiàn)數(shù)值一樣加法,而是進行了拼接。

圖二所示,此時的變量b已經(jīng)變成了一個數(shù)值,但結果還是74,那我們根據(jù)圖一可以得出一個結論,一個字符在和其他數(shù)據(jù)類型進行+運算時,另一個數(shù)據(jù)類型會轉(zhuǎn)變成字符然后進行拼接,觸發(fā)了隱式轉(zhuǎn)換

2.- * / %運算符

????????相比于+運算符,- * / %就顯得單純,因為他們只有一個運算功能

例:

字符與數(shù)值的運算

????????如圖所示,有兩個變量,一個為字符,一個為數(shù)值。看其結果,他們很明顯進行了運算,問題來了,一個是字符,一個是數(shù)值,他們是如何進行運算呢?結論就是他們觸發(fā)了隱式轉(zhuǎn)換,字符轉(zhuǎn)換成了數(shù)值,進行運算。

1.字符與字符的運算

我們把b也換成字符,結果一樣,都觸發(fā)了隱式轉(zhuǎn)換,把字符當做數(shù)值進行了處理。

2.字符與字符的運算

????????我們把字符里的內(nèi)容換成其他內(nèi)容,輸出結果為NaN非法的數(shù)值運算,我把最后一個NaN 進行了類型檢測,類型還是為數(shù)值。

以上面介紹的都是字符與數(shù)值計算存在的區(qū)別差異,下面介紹一下另一種情況。算術運算符里存在的共同性。


數(shù)值與布爾的運算

????????在數(shù)值與布爾的運算中,觸發(fā)的隱式轉(zhuǎn)換是先把布爾轉(zhuǎn)換為數(shù)值類型,true=1,false=0;然后就按照正常運算輸出結果。

????????算數(shù)運算符中隱式轉(zhuǎn)換先寫到這,我寫的這些并不完整,還有許多數(shù)據(jù)類型的運算沒說到,不過不會隨時補充的,下面說第二個場景。

????????????????????觸發(fā)場景二、if語句

? ? ? ?例: if(1)(? alert("會彈出來么?");)? 答案:會

? ? ? ? 我們知道if后面的括號里的條件是用來判斷布爾值的,條件為真回輸出,假則停止,而我們在例子的條件只是一個數(shù)字,為什么會輸出真呢。

? ??????if()中只需要布爾值,那么在if判斷中,會把括號內(nèi)所有的數(shù)據(jù)類型,轉(zhuǎn)換成布爾值。

? ??????if()隱式類型轉(zhuǎn)換的規(guī)則如下

????????數(shù)值:非0為true

????????字符:非空為true

????????對象,數(shù)組,函數(shù):true

????????undefined,NaN,null:為false

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容