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

`(i === true)`与`(i)`在条件判断中是否存在区别?

if(i === true) 和 if(i) 的区别

这两种写法核心区别在于判断逻辑的严格程度:

  • if(i) 是判断变量i是否为真值:JavaScript里除了false、0、""(空字符串)、null、undefined、NaN这几个假值之外,其他所有值都会让这个条件成立。比如1、"hello"、{}(空对象)、[](空数组)这类值,都会触发if块里的代码。
  • if(i === true) 是严格全等判断:只有当i的类型和值都完全等于布尔值true时,条件才会成立。也就是说,只有i本身就是true这个布尔值的时候,才会进入if块。

举几个实际例子对比:

  • 当i = 1时:if(i)成立,if(i === true)不成立(因为1是number类型,true是boolean类型,严格全等要求类型和值都一致)
  • 当i = "true"时:if(i)成立,if(i === true)不成立(字符串和布尔值类型不匹配)
  • 当i = []时:if(i)成立,if(i === true)不成立(数组对象和布尔值类型不匹配)
  • 当i = true时:两种写法的结果完全一致

所以能不能替换,要看原代码的业务意图:如果原代码本来就只想在i严格等于布尔值true的时候执行逻辑,那换成if(i)会导致很多非预期的真值触发代码,肯定不行;如果原代码只是想判断i不是假值,那替换是没问题的,但得确认原逻辑确实不需要严格判断为true。

内容的提问来源于stack exchange,提问作者A good person

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:20:17