1 console.log(1 + "2" + "2");
很明顯輸出的是122,而且:spa
console.log(typeof (1 + "2" + "2"));
輸出的是string類型.上面的結果是毫無疑問的.code
console.log(1 + +"2" + "2"); console.log(typeof (1 + +"2" + "2"));//string
代碼2中的第一個輸出的是32, 由於+"2"會默認把字符串2轉成number類型的2,因此再跟後面的字符串相加等到最終的32,而且,輸出的仍然是字符串類型.blog
1 console.log( "A" - "B" + "2");//NaN2 2 console.log( "A" - "B" + 2);//NaN
第一行輸出的是NaN2,是由於 "A" - "B"輸出的是NaN, 當NaN與字符相加的是,NaN會默認轉成字符串類型,即"NaN",因此最終結果是NaN2字符串
第二行輸出的是NaN,毫無疑問,只是爲了跟第一行作對比.string
1 console.log(undefined + 2); 2 console.log(null + 2);
這裏也涉及到了默認轉換問題, undefined和null與數字相加會先默認轉成數字類型,而後再進行相加.此時,咱們須要看一個代碼:console
1 console.log(Number(undefined));//NaN 2 console.log(Number(null));//0
結果就出來了,要記住,undefined默認轉成數字類型是NaN,而null默認轉成數字類型是0,這也是undefined和null的其中一個區別. class
因此,綜上所述,代碼4分別輸出的是NaN 和 2.margin