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

为何浏览器JavaScript中{} - 1的运算结果为-1?

为什么{} - 1在浏览器和Node环境结果不同?

这是因为两个环境对{}的解析逻辑存在差异:

  • 浏览器控制台:{}会被当作空代码块处理,而非对象字面量。此时整个表达式相当于直接执行-1,自然得到结果-1。
  • Node REPL环境:{}会被解析为对象字面量,严格按照类型转换规则执行:
    1. 先调用{}的valueOf()方法,返回对象本身(非原始值)
    2. 接着调用toString()方法,得到字符串'[object Object]'
    3. 尝试将该字符串转为数字时会得到NaN,NaN - 1的结果还是NaN

如果要在浏览器里让{}被解析成对象字面量,只需给表达式加个括号:({} - 1),此时结果就会和Node环境一致,返回NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:17:01