Javascript 是否值得先检查元素是否存在?

Javascript 是否值得先检查元素是否存在?,javascript,jquery,html,local-storage,Javascript,Jquery,Html,Local Storage,背景:我正在建立一个偏好 使用html本地存储的系统 API(带有php会话回退)。如果您喜欢的项目位于 第页,使用js添加类“收藏夹” 如果我不知道元素id是否会出现在页面上。最好先检查它是否存在,还是jQuery返回的false同样有效?无论哪种方式,您总是要执行$()。因此,保留一个引用该方法结果的变量,通过检查它是否存在,效率将不会有损失(或高度可忽略的损失)。很可能不是。如果jQuery找不到匹配项,它将没有什么可枚举的,只会继续。换句话说,像这样的事情是不必要的: var $favo

背景:我正在建立一个偏好 使用html本地存储的系统 API(带有php会话回退)。如果您喜欢的项目位于 第页,使用js添加类“收藏夹”


如果我不知道元素id是否会出现在页面上。最好先检查它是否存在,还是jQuery返回的
false
同样有效?

无论哪种方式,您总是要执行
$()
。因此,保留一个引用该方法结果的变量,通过检查它是否存在,效率将不会有损失(或高度可忽略的损失)。

很可能不是。如果jQuery找不到匹配项,它将没有什么可枚举的,只会继续。换句话说,像这样的事情是不必要的:

var $favorite = $("#favorite");
if ($favorite.length) {         // Test whether it exists
  $favorite.doSomething();
}
最好写为:

$("#favorite").doSomething();

有类似情况的测试代码

VS

 $('#item_123').remove(); //this turned out slower for me in chrome 13

你怎么检查“页面上是否有你喜欢的项目”?嗯,在Chrome12中我的速度更快了。另外,.在测试中,没有匹配的元素,因此
$('#item_123').remove()从不运行。因此,您所做的只是比较
$('#item_123')。length==1
$('#item_123')。remove()。因此,是的,访问
.length
属性可能会比调用
.remove()
方法性能更好。感谢您向我发送jsperf的指导
 $('#item_123').remove(); //this turned out slower for me in chrome 13