码迷,mamicode.com
首页 > 其他好文 > 详细

怎么理解 {} + [] 与 ({} + []) 的结果?

时间:2018-04-28 16:58:53      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:运算   解析   表达   []   相关   字符串   对象   使用   obj   

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

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

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

 

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

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

 

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

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

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

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

 

怎么理解 {} + [] 与 ({} + []) 的结果?

标签:运算   解析   表达   []   相关   字符串   对象   使用   obj   

原文地址:https://www.cnblogs.com/waylen/p/8968273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!