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

为什么console.log(Object +1)的输出为function Object(){[native code]}1?

为什么Object + 1会输出函数字符串拼接1,而不是数值?

先看你执行的代码:

console.log(Object +1)

输出结果是:

function Object() {
    [native code]
}1

原因在于以下几点:

  • Object是JavaScript内置的构造函数,属于对象类型(函数在JS里是特殊的对象)。当对象参与加法运算时,会先按照ECMAScript的ToPrimitive规则转换为原始值。
  • 对于函数对象,ToPrimitive转换会优先调用其toString()方法,而非valueOf()。Object.toString()返回的是描述该原生函数的字符串:"function Object() { [native code] }"。
  • 此时加法运算的一侧是字符串,另一侧是数字1,根据加法规则,数字会被转换为字符串"1",最终执行字符串拼接,得到你看到的结果。

你预期的数值加法不会触发,因为对象转原始值时先得到了字符串,直接进入了字符串拼接的分支,而非走到“双方转数字相加”的逻辑。

如果想要尝试将Object转为数值后相加,可以手动调用Number()转换:

console.log(Number(Object) + 1) // 输出 NaN,因为函数无法转为有效数字

内容的提问来源于stack exchange,提问作者Zyad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:20:05