zoukankan      html  css  js  c++  java
  • 怎么理解 {} + [] 与 ({} + []) 的结果?

    在学习对象时,发现 {} + [] 的结果为 0 , 而 ({} + []) 的结果为 '[object Object]'。

    只是一个有括号,一个没有括号,结果却完全不同,经过搜索和相关资料参考,我自己的理解是这样的:

    因为JavaScript 本身的语法特性, {} 既可以表示一个代码块,也可以表示一个空对象,具体属性哪一种需要看代码执行环境。

    {} + [] 这段代码中就是把 {} 解释成了一个代码块,那么 {} + [] 看起来像是一个运算,其实应该是分开来解析, {} 为一个代码块,  +[] 为一个表达式

    所以 {} + [] 最终计算的是 +[] , 将一个空数组转换成正整数,结果为0.

    ({} + []) ,因为小括号里面为一个运算表达式,所以这里{}是作为一个空对象来解析的,空对象与空数组使用加号运算,实际是一个字符串连接操作,即

    {}.toSting() + [].toString()

    {}.toString() 的结果为 '[object Object]' , [].toString() 的结果为 ''

    所以最终结果为:'[object Object]' 

  • 相关阅读:
    Lesson_strange_words6
    Lesson_strange_words3
    Lesson_strange_words4
    Lesson_strange_words1
    Lesson_strange_words2
    关于我们子页面
    关于我们页面
    走进龙门石窟子页面
    3.用户登陆注册
    2.项目初始化
  • 原文地址:https://www.cnblogs.com/waylen/p/8968273.html
Copyright © 2011-2022 走看看