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')相同这是获取dom元素的一种非常有效的方法。向选择器添加一个额外的标记名没有帮助。哦,你是说类*facepalm*@BoltClock、@qwertymk、@box9抱歉,伙计们,迟到了,我想说的是班级而不是id。我编辑了我的答案。你如何判断“最常见的公认浪费”?你可以将它改为z>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();