var a = "ab";
var b = "ab";
a+=1; // "ab1"
b++; // "NaN"
Run Code Online (Sandbox Code Playgroud)
(在chrome的V8上测试过)
有人可以根据++算术运算符的内部原子动作和+=带参数的赋值运算符来解释为什么结果会有所不同1
++转换为数字,然后+=使用字符串连接递增.
从规格:
11.3.1后缀增量运算符
...
3,让oldValue是ToNumber(GetValue(lhs)).
4. 使用与运算符相同的规则newValue将值1添加到结果(见11.6.3).oldValue+
对于这种a+=1情况,如果您向字符串添加数字或以其他方式将数字转换为字符串:
11.6.1加法运算符(+)
...
7.如果Type(lprim)是String或是Type(rprim)String,那么
a.返回串联ToString(lprim)后跟ToString(rprim)的结果的字符串8.将添加操作的结果返回到ToNumber(lprim)和ToNumber(rprim).
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |