JavaScript運算子中的隱式轉換規律

2021-07-22 06:56:07 字數 1261 閱讀 6882

如果包含的是有效數字字串或者是有效浮點數字串,則會將字串轉換(number())為數值,再進行加減操作,返回值的型別是:number型別。

如果不包含有效數字字串,則會將字串的值轉換為nan,返回值的型別是:number型別。

如果是boolean型別,則先會把true或者false轉換為1或者0,再進行加減操作,返回值的型別是:number型別。

如果是null型別,則先會把null轉換為0,在進行加減操作,返回值的型別是:number型別。

如果是undefined,則先會把undefined轉換為nan,再進行加減操作,返回值的型別是:number型別。

如果是物件,則先會通過物件的valueof()方法,進行轉換,如果返回的是nan,呼叫tostring()方法,在進行前面的操作,返回值的型別是:number型別。(注:空陣列會返回0,在進行加減操作,空物件則會返回nan)。

注:只有undefined、null、nan、0、空字串會被轉換為false,其餘都為true

邏輯操作符一般用於語句判斷中。通過判斷結果返回的值進行後面的語句操作。

邏輯非(!)操作符:首先會通過boolean()函式將其操作值轉換為布林值,然後求反。

邏輯與(&&)操作符:如果第乙個值經過boolean()函式轉換後為true,則返回第二個操作值,否則返回第乙個操作值。如果有乙個操作值為null這返回null,如果有乙個操作值為undefined,則返回undefined,如果有乙個值為nan,則返回nan。

邏輯或(||)操作符:如果第乙個值經過boolean()函式轉換為false,則返回第二個操作值,否則返回第乙個操作值。

(注:邏輯操作符的運算為短路邏輯運算:前乙個條件已經能夠得出結果後續條件不再執行!)(關係操作符的操作值也可以是任意型別):

1. 如果兩個操作值都是數值,則直接比較大小。

2. 如果兩個操作值都是字串,則字串進行其unicode編碼進行比較。

3. 如果乙個操作值是數值,則另乙個值轉換為數值進行比較。

4. 如果乙個操作值是物件,則呼叫物件的valueof()和tostring()方法,然後再進行上述比較。

5. 如果乙個操作值是布林值,則將布林值轉換為數值再進行比較。

(注:nan和任何值都不相等,包括自己,同時它與任何型別比較都會返回false。)

布林值、字串和數值進行比較,會先將其轉換為數值再進行比較。

null和undefined比較是相等的,但不是全等的。

nan與任何值都不相等,都會返回false。

javascript 運算子詳解

一 算術運算子 二 賦值運算子 三 字串 運算子 str1 hello,str2 i am mark txt3 txt1 txt2 str3 hello,i am mark greeting visitor mark dear president dear 如果變數 visitor 中的值是 mar...

javascript的短路運算子

短路運算子 先來段 左邊為 true 時 返回右邊 的執行結果 2 1 a 1 結果列印 後面的 執行結果 也就是 1 左邊為 false 時 返回左邊 的執行結果 2 1 a 1 結果列印 前面的 執行結果 也就是 false 以上我們得出結論 短路運算子 只有前面的 為 真 true 時才執行後...

javascript算術運算子詳解

算術運算子 分為字首形式和字尾形式 字首形式先加減1在執行 字尾形式先執行再加減1 注意 號用來連線兩個字串 只要 連線的運算元中有乙個是字串型,js就會自動把非字串型資料作為字串型資料來處理 js 的執行順序是從左到右,所以在 連線的表示式中,遇到字串型資料之前,所有出現的數值型資料 或者可以自動...