首先,我們來看這個例子:
例1:
1 | var i = 1; |
2 | var j = "1"; |
3 | console.log(i+j); |
這個打印的結果是多少呢?我們來看,i是數字,j是字符串,兩個相加,就字符串拼接,1旁邊拼個1,結果就是11。
再來,我們換一下:
例2:
1 | var i = 1; |
2 | var j = 1; |
3 | var m = "1"; |
4 | console.log(i+j+m); |
這個結果是不是也是按照上面的算法,字符串拼接,然後結果是111呢?這當然也是字符串拼接,但結果卻不是111;i與j相加就是數字相加,不需要字符串來拼接了,所以結果是21。
例3:
1 | var i; |
2 | var j; |
3 | console.log(i-j); |
如上例子,當i與j兩個都是變量,並沒有定義類型時,我們該按照什麼來計算呢?還是它的結果是underfined?我們在webstrom上運行一下,看到打印的結果是NaN。爲什麼呢?這就是js的運算,它自動把轉化爲數據類型,但又沒有定義值,所以輸出NaN。
我們來看一個更容易理解的例子:
例4:
1 | var i = true; |
2 | var j = false; |
3 | console.log(i-j); |
這個按照變量自動轉化成數據類型來計算,很容易得出結果是1。
例5:
1 | var i = null; |
2 | var j = NaN; |
3 | console.log(i-j); |
這個例子就更容易看出它的運算規則,最後算出的結果是NaN。
通過以上那些例子,我們總結出一些規則:
1.若變量中有一個是字符串的,則進行字符串拼接,如例1;
2.若是數字的,則進行四則運算,如例2;
3.若沒有字符串,也沒有數字,如例3、例4、例5,就會自動轉化爲數據類型,然後在進行計算!