Mic*_*oka 8 javascript casting
在Firefox中测试:
a = [] + 0;
b = 0;
alert(a); // 0
alert(b); // 0
alert(!a); // false
alert(!b); // true
Run Code Online (Sandbox Code Playgroud)
use*_*716 11
该+ 连接运算引起toString的评估0.
因此,值a是"0",而值b是0.
来自ECMAScript 11.6.1加法运算符(+)
加法运算符执行字符串连接或数字加法.生产AdditiveExpression:AdditiveExpression + MultiplicativeExpression的计算方法如下:
让lref成为评估AdditiveExpression的结果.
设lval为GetValue(lref).
设rref是评估MultiplicativeExpression的结果.
设rval为GetValue(rref).
设lprim为ToPrimitive(lval).
设rprim为ToPrimitive(rval).
如果Type(lprim)是String或Type(rprim)是String,那么
一个.返回串联ToString(lprim)后跟ToString(rprim)的结果的字符串
将添加操作的结果返回到ToNumber(lprim)和ToNumber(rprim).见11.6.3下面的注释.
注1:在步骤5和6中对ToPrimitive的调用中没有提供提示.除Date对象之外的所有本机ECMAScript对象都处理没有提示,就像提供了提示号一样; 日期对象处理缺少提示,就像提供了提示字符串一样.主机对象可以以某种其他方式处理缺少提示.
注2:步骤7与关系运算符(11.8.5)的比较算法的步骤3的不同之处在于,使用逻辑或运算代替逻辑运算.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |