JS中如何将数字转为布尔值?为什么if条件始终进入else分支?
问题原因
你代码的核心错误是括号位置错误,逻辑执行顺序完全不符合预期,拆解如下:
- 你写的
$(document).find($('.formSectionWrapper').length)执行逻辑完全错误:你先获取到了$('.formSectionWrapper').length的数字值,把这个数字作为参数传入了find()方法 find()方法仅支持传入选择器、DOM元素、jQuery对象类参数,传入数字时永远会返回空jQuery对象- 空jQuery对象本身转布尔值为
true,外层加!取反后结果永远为false,所以if条件永远不成立,始终执行else块
修正写法
不需要嵌套$(document).find(),直接判断全局查找的元素长度即可:
// 写法1:显式判断长度为0,可读性更强 if ($('.formSectionWrapper').length === 0) { console.log('IF') } else { console.log('ELSE') } // 写法2:使用隐式布尔转换,注意.length的位置 if (!$('.formSectionWrapper').length) { console.log('IF') } else { console.log('ELSE') }
如果确实需要限定在document范围内查找(绝大多数场景不需要),修正括号位置即可:
if (!$(document).find('.formSectionWrapper').length) { console.log('IF') } else { console.log('ELSE') }
内容的提问来源于stack exchange,提问作者HamHp
相关产品推荐
相关产品推荐

