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

可否简化JavaScript中判断show变量是否未定义后取反的代码?

结论

完全可以简化,以下几种方案都和原有代码逻辑完全等价,兼容你给出的所有调用效果。

简化方案

方案1:替换typeof判断为直接值对比(最稳妥,无兼容性问题)

原代码的typeof show == 'undefined'判断可以直接简化为和undefined直接对比,代码更短可读性更好:

show = show === undefined ? undefined : !show

这个写法和原逻辑100%一致,包括用户显式传入undefined的场景也完全兼容。

方案2:合并到toggleClass调用,省略单独赋值步骤

如果你不需要后续再使用show变量,可以直接把逻辑写在toggleClass的参数里,删掉单独的赋值行,代码更精简:

// 删掉原来的show赋值行,直接写下面这行即可
$(el).toggleClass('d-none', show === undefined ? undefined : !show)

方案3:用arguments判断(更简短,适合确定不会显式传undefined的场景)

如果你的业务场景里不会出现用户显式传入undefined的情况,可以用arguments判断是否传参,代码更短:

show = arguments.length ? !show : undefined

注意:如果调用时存在显式传入undefined的情况(即myToggle(undefined)),该写法和原逻辑不等价,原逻辑会返回undefined,该写法则会返回!undefined即true,请根据业务场景选择。

效果验证

以上所有方案都完全兼容你给出的调用效果:

  • myToggle():第二个参数传undefined,jQuery自动执行类的切换逻辑
  • myToggle(1):参数取反后为false,移除d-none类
  • myToggle(0):参数取反后为true,添加d-none类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:39:04