Javascript $(“myElement”)。长度vs$(“myElement”)来检查dom元素是否存在?

Javascript $(“myElement”)。长度vs$(“myElement”)来检查dom元素是否存在?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我需要检查某个dom元素是否存在。我看到其他帖子建议使用长度属性来检查这一点。那很好。但即使没有长度属性,它也可以工作。例如: !!$("#myElement"); // true !!$("#myElement").length; // true 这两种方法返回相同的值。因此,不使用length属性检查元素是否存在可以吗?不,始终使用length 这里的逻辑是有缺陷的,因为jQuery对象从不为空或null,即使没有选择任何元素,它也总是返回一个对象,因此无法可靠地将其强制为布

我需要检查某个dom元素是否存在。我看到其他帖子建议使用长度属性来检查这一点。那很好。但即使没有长度属性,它也可以工作。例如:

!!$("#myElement");        // true
!!$("#myElement").length; // true
这两种方法返回相同的值。因此,不使用length属性检查元素是否存在可以吗?

不,始终使用length

这里的逻辑是有缺陷的,因为jQuery对象从不为空或null,即使没有选择任何元素,它也总是返回一个对象,因此无法可靠地将其强制为布尔值以查看选择器是否匹配任何元素

console.log!!$'存在“;//应该是真的 console.log!!$'doesNotExist';//应该是假的
您是否考虑过使用您知道不存在的元素(即长度返回0)来测试此功能?结果可能会让您感到惊讶。在大多数代码中,我看到$myElement.length{},因为如果没有长度,它将计算为false,如果有长度,它将计算为true。使用$myElement会得到一个假阳性,因为它不关心元素是否存在。jQuery将始终返回包含任何匹配元素的jQuery对象,因此始终检查.length以查看其中是否确实包含元素。请随便看一看► 你是对的!![]返回true。我能用吗$myElement[0]?可以,但不能。长度属性是公认的标准。我很好奇为什么!![]返回true?空数组不应该是falsy吗?通过索引访问jQuery对象会返回基础元素对象而不是数组,当找不到元素时,该元素将为null,因此布尔强制可以工作。我理解在使用像$'doesNotExist'[index]这样的索引时我不明白的是,为什么在js中会真正考虑空数组。