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