美文网首页
加号操作符

加号操作符

作者: 积微微微 | 来源:发表于2017-09-11 17:02 被阅读14次

    问题

    请问下面这行代码的执行的结果?

     ++[[]][+[]]+[+[]] 
    

    第一眼看到这个很可能是懵逼的,这是个什么玩意儿,能执行吗?

    第一个要点:
    +[] = ?

    firefox测试运算结果.png

    重点来了: +"" = 0

    根据周爱民老师《JavaScript语言精髓与编程实践》,单个加号作为运算符在JavaScript中有三种作用。

    1. 标识字符串连接
    2. 表示数字取正值的一元运算符
    3. 表示数值表达式的求和运算。

    加号在对数字取正值时,如果后面接的数据不是数字,那么会进行强制类型转换。

    所以表达式++[[]][+[]]+[+[]]可以简化为
    ++[[]][0]+[0]
    在这里++[[]][0]=+(+[[]][0]+1) = +(0+1) = 1
    然后再次简化为
    1+[0]=1+"0" = 10

    加号运算符的另外一条规则是如果表达式中存在字符串,则优先按照字符串连接进行运算。所以数字1和字符串"0"相加,得到的结果是字符串"10"

    相关文章

      网友评论

          本文标题:加号操作符

          本文链接:https://www.haomeiwen.com/subject/mxntjxtx.html