美文网首页
[] + [],[] + {},{} + {},{} + []的

[] + [],[] + {},{} + {},{} + []的

作者: 海山城 | 来源:发表于2019-04-02 20:40 被阅读0次

    1. [] + []

    结果:"" 
    

    解释:

    • ①加号运算符只能使用于原始数据类型,对象相加时需转化为基本类型
    • ②对象在转换基本类型时,首先会调用 valueOf 然后调用 toString
    • ③[].valueOf()结果为[],转化后不是基本类型,因此继续调用toString(),[].toString()结果为""
    • ④2个空字符串相加等于空字符串,"" + "" => ""

    2. [] + {}

    结果:"[object Object]"
    

    解释:

    • ①对象相加时需转化为基本类型
    • ②对象在转换基本类型时,首先会调用 valueOf 然后调用 toString
    • ③[].toString()结果为"",{}调用toString()结果为"[object Object]"
    • ④"" + "[object Object]" => "[object Object]"

    3. {} + []

    结果:0
    

    解释:

    • ①{}在开头被当成代码块忽略
    • +x,加号在前面跟一个变量,会将变量转化成number型
    • ③对象在转换基本类型时,首先会调用 valueOf 然后调用 toString
    • ④[].toString()结果为""
    • ""转化成number为0,+ "" => 0

    4. {} + {}

    结果:NaN
    

    解释:

    • ①{}在开头被当成代码块忽略
    • +x,加号在前面跟一个变量,会将变量转化成number型
    • ③对象在转换基本类型时,首先会调用 valueOf 然后调用 toString
    • ④{}调用toString()结果为"[object Object]"
    • "[object Object]"转化成number为NaN,+ "[object Object]" => NaN

    特别注意: {} + {}在不同的浏览器有不同结果,有的浏览器会把{} +{}特殊对待成({}) + {},即首个{}不当成代码块,结果会得到"[object Object][object Object]"

    相关文章

      网友评论

          本文标题:[] + [],[] + {},{} + {},{} + []的

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