gpt4 book ai didi

javascript - console.log(...) 和 REPL 模式下的不同输出

转载 作者:行者123 更新时间:2023-12-03 06:01:24 24 4
gpt4 key购买 nike

在阅读一些有关 JavaScript 强制转换的内容时,我发现了这一点。

[] + {}; // [object Object]
{} + []; // 0

我理解这是如何工作的,但我无法理解为什么“console.log”上述两个语句并在 REPL 中执行它们会导致两个不同的结果。

当在 REPL 模式下运行时

enter image description here

When ran in browser(Chrome, Firefox) 
console.log([] + {}); // '[object Object]'
console.log({} + []); // '[object Object]'

我最初的想法可能是toString在 console.log 参数上调用,但情况绝对不是这样。有什么想法吗?

最佳答案

语句{} + []对于JavaScript引擎来说是不明确的;虽然人类会将其解读为“空对象和空数组的相加”,但 JavaScript 引擎将其解析为:

// {} + []
{}; // empty block statement with implicit semicolon
+ []; // empty array, coerced into the number 0
// = 0

当用括号括起来时,例如在函数内,此解释无效,因此引擎会将其解释为对象的添加(强制转换为字符串 '[Object]' )和一个空数组(强制转换为字符串 '')

关于javascript - console.log(...) 和 REPL 模式下的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com