Javascript中最常见的计算能力浪费是什么?

Javascript中最常见的计算能力浪费是什么?,javascript,jquery,performance,Javascript,Jquery,Performance,我们都见过这样做的人: jQuery('a').each(function(){ jQuery(this)[0].innerHTML += ' proccessed'; }); function letsPoluteNS() { polute = ''; for (morePolution = 0; morePolution < arguments.length; morePolution++) polute.join(arguments[more

我们都见过这样做的人:

jQuery('a').each(function(){
    jQuery(this)[0].innerHTML += ' proccessed';
});

function letsPoluteNS() {
    polute = '';
    for (morePolution = 0; morePolution < arguments.length; morePolution++)
        polute.join(arguments[morePolution]);
    return polute;
}
jQuery('a')。每个(函数(){
jQuery(this)[0]。innerHTML+=“已处理”;
});
函数letsPoluteNS(){
polute='';
for(morePolution=0;morePolution
等等。我想知道人们看到的最常见的JavaScript/jQuery技术是什么,它会减慢页面速度和/或为JavaScript引擎浪费时间


我知道这个问题似乎不符合公认的问题,但我要问的是“最常见的公认浪费是什么?”

与跟踪用户和大量宣传有关的任何问题。那肯定是浪费了空间

我猜在非常复杂的html中错误地使用类而不是ID作为选择器会使事情变得缓慢。
当然。我为此感到内疚。基本上,在jQuery选择器中只使用元素的类。而不是将类选择器与元素标记名组合

<div></div>
<div class="hide"></div>
<div class="show"></div>
<div class="hide"></div>
<div class="hide again"></div>
而不是更快

$("div.hide").hide()


此外,这也是低效的,许多人不使用选择器的上下文参数


以下哪一项处理得更好:

   $("#mydiv").click(function () {
      $("span", this).show();
   }

调用$.animate来设置元素的动画应该会使事情变慢。

您还会看到:

$('#this').find('a').doSomeThing();
知道什么更有效率吗?一个包含这两个选项的选择器将更好地为您服务

$('#this a').doSomeThing();

这似乎很明显,但您会一直看到。

不从getgo声明变量以便缓存它们,不使用闭包和重复同一函数/调用/etc的x编号,只使用eval()更改每个变量的id或类

什么
#hello
肯定是更快的(
document.getElementById()
尽管如此)。是的getElementById比{getElementByClassname->getElementById}快得多,即使没有开销,
$(“#hello”)
基本上与
getElementById('hello')相同1000@JCOC611也适用于(i=0;i@travelboy更改为
z>1000将使循环根本不运行;)我想你的意思是
z--
@box9:对……脸红是的,这个性能的东西是高级的!:)lol M$的实现如何
MakeIESlow()
??哈哈,它被设置为默认值,实际上不是真的。第一个更快,因为它直接委托
document.getElementById()
来缩小搜索范围。所以在所选集合上循环更有效?我一直认为单一选择器是首选方法。这取决于具体情况。可以由浏览器直接处理的事情总是更快。最清楚的例子是
getElementById()
,但是如果浏览器支持
getElementsByName
getElementsByTagName
querySelectorAll
,那么提供一个可以由这些函数直接处理的选择器并使用jQuery方法过滤结果会更快。
$('#this').find('a').doSomeThing();
$('#this a').doSomeThing();