You need to enable JavaScript to run this app. 如何对JavaScript怪异表达式 +!!NaN * "" - - [,] 进行求值?
优惠活动
大模型
产品
解决方案
定价
更多

如何对JavaScript怪异表达式 +!!NaN * "" - - [,] 进行求值?

JS 怪异表达式 +!!NaN * "" - - [,] 求值步骤

前置说明

本次涉及的JS运算符优先级从高到低为:逻辑非! > 一元正负号+/- > 乘法* > 加减法+/-,同优先级从左到右执行,所有运算涉及隐式类型转换时遵循ECMAScript标准规则。


第一步:计算 !!NaN

  • NaN属于JS内置假值,逻辑非!作用于假值返回布尔值true
  • 第二次取反作用于true,返回false
  • 本步结果:!!NaN = false

第二步:计算一元正号作用后的 +!!NaN

  • 一元正号会强制将操作数转为数值类型,布尔值false转数值的结果为0
  • 本步结果:+!!NaN = 0

第三步:计算乘法项 +!!NaN * ""

  • 乘法运算会先将两个操作数隐式转为数值再计算
  • 空字符串""转数值的结果为0
  • 本步结果:0 * 0 = 0,左半部分乘法项最终值为0

第四步:计算右半部分 - [,]

  • [,]是带尾逗号的数组字面量,等价于[undefined](尾逗号会被JS解析器忽略,仅保留前面的占位元素)
  • 一元负号会强制将数组转为数值:数组转数值先调用toString()方法,[undefined].toString()返回空字符串"",空字符串转数值为0
  • 加负号后结果为-0
  • 本步结果:- [,] = -0

第五步:计算最终减法 0 - (-0)

  • JS中数值运算规则:减去一个负数等于加上对应的正数,0 - (-0)等价于0 + 0
  • 最终运算结果:0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 13:12:01