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

为何![]+!![]+!![]的输出结果为2?求技术解析

为什么![]+!![]+!![]的返回结果是2?

要搞清楚这个结果,得拆解表达式里的每一步运算,结合JavaScript的类型隐式转换规则来看:

1. 逻辑非!对空数组[]的处理

在JavaScript中,空数组[]属于"真值"(除false、0、""、null、undefined、NaN之外的所有值都是真值)。逻辑非运算符!会先把操作数转为布尔值,再取反:

  • ![]:先把[]转为布尔值true,取反后得到false(布尔类型)
  • !![]:第一个!把[]转成false,第二个!再取反,得到true(布尔类型)

2. 加法运算符+的隐式类型转换

JavaScript的+运算符如果遇到非数值类型的操作数,会自动做类型转换:当操作数是布尔值时,会被转为对应的数值:false→0,true→1。

按从左到右的运算顺序计算整个表达式:

  1. 先算![] + !![]:false + true → 转换为0 + 1,结果是1(数值类型)
  2. 再算1 + !![]:1 + true → 转换为1 + 1,最终结果是2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:40:34