何為隱式類型轉(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ù)值,他們是如何進行運算呢?結論就是他們觸發(fā)了隱式轉(zhuǎn)換,字符轉(zhuǎn)換成了數(shù)值,進行運算。

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

????????我們把字符里的內(nèi)容換成其他內(nèi)容,輸出結果為NaN非法的數(shù)值運算,我把最后一個NaN 進行了類型檢測,類型還是為數(shù)值。
以上面介紹的都是字符與數(shù)值計算存在的區(qū)別差異,下面介紹一下另一種情況。算術運算符里存在的共同性。

????????在數(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
