猿问

为什么{} + {}在Chrome控制台中不再是NaN?

我今天注意到NaN当你输入{}+{}控制台时,Chrome 49不再输出。而是输出字符串[object Object][object Object]

为什么是这样?语言有变化吗?


一只甜甜圈
浏览 430回答 3
3回答

绝地无双

Chrome devtools现在会自动将一系列以隐含的括号开头{和结束的内容包装起来}(请参阅代码),以强制将其评估为表达式。这样,{}现在创建一个空对象。如果你回顾历史(↑),你可以看到这一点,前一行将包含在(…)。为什么?我不知道,但我可以猜测它可以减少那些不知道block-vs-object-literal事情的新手的混乱,如果你只是想评估一个表达式,它也会更有帮助。事实上,正如bug 499864中所讨论的那样,这就是推理。纯粹的便利。因为节点REPL也有它(见代码)。

翻翻过去那场雪

如果在检查完之后点击向上箭头,您会注意到{} + {}它显示而不是显示({} + {}),这导致了"[object Object][object Object]"。相比之下,在Firefox中{} + {}仍然显示NaN,但如果你这样做({} + {})也会显示"[object Object][object Object]"。因此,看起来Chrome在看到此操作时会自动添加周围的括号。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答