zoukankan      html  css  js  c++  java
  • JavaScript的加号运算符

    先上结果(来自 http://stackoverflow.com/questions/7124884/why-is-1-2-3-4-1-23-4-in-javascript):

    不同类型操作数相加后的类型如下表:

      undefined null       boolean number string
    undefined number number number number string
    null number number number number string
    boolean number number number number string
    number number number number number string
    string string string string string string

    operand+operand=result

    相加规则:

      1.如果操作数中有一个是对象,它会先尝试valueOf()方法,若返回的值不是原始值,则调用tostring()方法,然后用返回值进行运算。

      2.如果操作数中有一个是字符串,另一个也会被转换为字符串,然后连接在一起,组成新的字符串。

      3.其他情况下,两个操作数会转换为数字,执行相加运算。

    示例(用例结果为Firefox(49.0.2)下的结果):

    1.数字+undefined

      var result=12+undefined;//NaN

    2.数字+null

      var result=12+null;//12

    3.数字+string

      var result=12+'12';//1212

    4.boolean+null

      var result=true+null;//1

    5.boolean+string

      var result=true+'we';//truewe

    6.数字+数组

      var result=12+[1,2,3];//121,2,3

      []会被转换为原始值,先尝试valueOf()方法,返回数组本身,再调用toString()方法,返回字符串1,2,3;

    7.数字+对象

      var result=12+{};//12[object Object]

      空对象{}被转换为字符串[object Object],数字也被转换为字符串,两个操作数再进行连接。

    8.{}+{}

      var result={}+{};//[object Object][object Object]

      var result='b'+{};//b[object Object]

      var result={}+'b';//[object Object]b

      var result={}+[];//[object Object]

  • 相关阅读:
    HDU 2822 Dogs【两次bfs】
    HDU 2819 Swap【二分图|启发题】
    HDU 2818 Building Block【并查集+根节点偏移量】
    HDU 2817 A sequence of numbers【水题|快速幂】
    Linux内核分析--操作系统是如何工作的
    讲座感想
    用eclipse开发和调试postgresql-8.4.1
    Ubuntu 14.04下翻译软件的安装与比较
    Linux下autoconf和automake使用
    github 使用网址
  • 原文地址:https://www.cnblogs.com/yangrenmu/p/5988417.html
Copyright © 2011-2022 走看看