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