博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript {}+"" 与 ""+{}
阅读量:4970 次
发布时间:2019-06-12

本文共 1334 字,大约阅读时间需要 4 分钟。

1. {}+""

 相当于+"", 因为js解析器把{} 当做 block表达式。

 一元运算符+ 的规则是(http://es5.github.io/index.html#x11.4.6):

  1. Let expr be the result of evaluating UnaryExpression.

  2. Return ((expr)).

  根据标准:

  "" ==>GetValue()--> "" ==>ToNumber()----> 0;

    1.执行GetValue (http://es5.github.io/index.html#x8.7.1) ,规则如下:

      If (V) is not Reference, return V.

    因此返回 "";

    2. 执行ToNumer(http://es5.github.io/index.html#x9.3):

       The MV of StringNumericLiteral ::: [empty] is 0.

    根据标准,因此空字符串"" 返回0;

  因此 : {}+"" //0;

 

2.  ""+{}

  标准中 二元运算符 加法规则如下:

  1. Let lref be the result of evaluating AdditiveExpression.

  2. Let lval be (lref).

  3. Let rref be the result of evaluating MultiplicativeExpression.

  4. Let rval be (rref).

  5. Let lprim be (lval).

  6. Let rprim be (rval).

  7. If (lprim) is String or (rprim) is String, then

    1. Return the String that is the result of concatenating (lprim) followed by(rprim)

  8. Return the result of applying the addition operation to (lprim) and(rprim). See the Note below .

  ""  =ToPrimitive=>"" =ToString=>""

  {} =ToPrimitive=>"[object Object]"=ToString=> "[object Object]";

  所以结果 ""+{}  //[object Object]

  备注 :ToPrimitive 如果是普通对象 会调用 对象的 valueOf方法。如果没有如果没有则调用 toString方法. 如果是Date对象,则会调用toString,如果没有则调用valueOf;

  相关网址:http://es5.github.io/index.html#x9.1

        http://es5.github.io/index.html#x8.12.8

 

转载于:https://www.cnblogs.com/Mr-Joe/p/4250066.html

你可能感兴趣的文章
如何快速三个月成为一个领域的高手的四个方法
查看>>
[51nod]1347 旋转字符串
查看>>
SpringBoot2.0 + SpringCloud Eureka搭建高可用注册中心(Eureka之三)
查看>>
10分钟学习pandas
查看>>
从vue的组件传值着手浅谈观察者模式
查看>>
推翻自己和过往,重学自定义View
查看>>
QML中的state 状态
查看>>
tomcat文件夹与文件解析
查看>>
consul如何限制注册的ip
查看>>
iOS开发中三种简单的动画设置
查看>>
ELK收集MySQL慢查询
查看>>
旋转数组
查看>>
2015 多校赛 第四场 1010 (hdu 5336)
查看>>
Day02 过滤和排序数据
查看>>
1043: [HAOI2008]下落的圆盘 - BZOJ
查看>>
CSS打造固定表头
查看>>
Activity管理类
查看>>
http缓存
查看>>
Luogu4022 CTSC2012熟悉的文章(广义后缀自动机+二分答案+动态规划+单调队列)
查看>>
java.lang.StringBuilder
查看>>