You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript REPL中[]+{}直接运行与赋值后结果不同的原因

Node REPL中[]+{}与let x = []+{}显示差异的原因

首先,[]+{}的运算结果确实是'[object Object]',这是JavaScript类型转换的标准行为:

  • 数组[]参与加法运算时会被转换为字符串,调用Array.prototype.toString()得到空字符串''
  • 对象{}转换为字符串时调用Object.prototype.toString()得到'[object Object]'
  • 两者执行加法操作时会进行字符串拼接,最终结果为'[object Object]'

你看到的差异并不是变量x的值为undefined,而是Node REPL的输出逻辑导致的:

  • 当你执行单独的表达式(比如[]+{})时,REPL会自动输出该表达式的计算结果
  • 当你执行let x = []+{}这类变量声明语句时,JavaScript规范规定let声明语句本身的返回值是undefined,所以REPL会显示undefined。但变量x的实际值仍然是'[object Object]',你可以在REPL中直接输入x并执行,就能看到正确的值。

内容的提问来源于stack exchange,提问作者Florian Wörister

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 02:12:06