js在处理字符串和数值加运算的时候会转换数值为字符串 然后执行字符串连接
在覆盖String.prototype.valueOf之前,new String(111)这样的字符串与数值加法也是字符串连接:
> var s = new String(11); undefined > s+11 '1111'
重写String.prototype.valueOf之后 用new String("xxx")构造的字符串对象会转换成数值与数值进行加法运算 而字符串常量仍旧是字符串连接
如下:
> String.prototype = function(){
... return 11;
... }
[Function]
> str = "22";
'22'
> var str2 = new String("22");
undefined
> var str3 = new String(22);
undefined
> 11+str
'1122'
> 11+str2
22
> 11+str3
22
>
本文探讨了JavaScript中字符串和数值相加时的行为差异。在默认情况下,这种操作会导致数值被转换为字符串并进行连接。然而,通过重写String.prototype.valueOf方法,可以改变这种行为,使得使用new String构造的字符串对象在与数值相加时被转换为数值。
253

被折叠的 条评论
为什么被折叠?



