怎么理解 {} + [] 与 ({} + []) 的结果?
Posted 无为学长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么理解 {} + [] 与 ({} + []) 的结果?相关的知识,希望对你有一定的参考价值。
在学习对象时,发现 {} + [] 的结果为 0 , 而 ({} + []) 的结果为 ‘[object Object]‘。
只是一个有括号,一个没有括号,结果却完全不同,经过搜索和相关资料参考,我自己的理解是这样的:
因为javascript 本身的语法特性, {} 既可以表示一个代码块,也可以表示一个空对象,具体属性哪一种需要看代码执行环境。
{} + [] 这段代码中就是把 {} 解释成了一个代码块,那么 {} + [] 看起来像是一个运算,其实应该是分开来解析, {} 为一个代码块, +[] 为一个表达式
所以 {} + [] 最终计算的是 +[] , 将一个空数组转换成正整数,结果为0.
({} + []) ,因为小括号里面为一个运算表达式,所以这里{}是作为一个空对象来解析的,空对象与空数组使用加号运算,实际是一个字符串连接操作,即
{}.toSting() + [].toString()
{}.toString() 的结果为 ‘[object Object]‘ , [].toString() 的结果为 ‘‘
所以最终结果为:‘[object Object]‘
以上是关于怎么理解 {} + [] 与 ({} + []) 的结果?的主要内容,如果未能解决你的问题,请参考以下文章