首先看一段JS高级编程中,有关加法(+)操作符的解释:
一个简单的测试:
alert(3 + null); // 3 alert('3' + null); // 3null
可见对于null的处理,并不是简单的取String。
ecma262的定义如下:
对第7、8步骤的理解:
7. 如果lprim或者rprim有一个的类型为String的话,则执行加法连接操作;
8. 否则,执行Number(lprim)+Number(rpirm)
所以:
alert(3 + null);
相当于
Number(3) + Number(null) = 3 // 注:Number(null)=0
alert('3' + null);
相当于
String('3') + String(null) = '3null'
个人对note1的理解:除了Date对象取String外,其他的引用型对象都取Number?有待验证!
例1:
var x = 5; var y = new Date(); var z = x + y; alert(z); // 5Thu Nov 21 2013 08:41:51 GMT+0800 (China Standard Time)
例2:
var x = '5'; // 注意区别 var y = new Date(); var z = x + y; alert(z); // 5Thu Nov 21 2013 08:46:40 GMT+0800 (China Standard Time)
未完,待续..
转载于:https://blog.51cto.com/wangyuelucky/1329365