我正在关注优化和简单的智力反应。
在javascript中,大多数时候您都在谈论for循环。
如果您在互联网上找到。您会看到很多人说代码效率较低
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
比
for(var i = 0; i < arr.length; i++) {
}
然后我考虑了一下。似乎可以这样说,因为如果您只是阅读代码,那么每次循环进入时都将在第一个代码中说出来。
所以我想借些实用的东西。
如果您发现有关javascript的一切都是对象,那么您可以“使用” setter和getter吗?
所以我尝试这个
var len = arr.length;
for(var i = 0; i < len; i++) {
}
但是我在ATM上发现的问题是我处于无限循环中。
答案 0 :(得分:0)
起初,实例上没有原型
var tmp = eles.prototype.length;
prototype
在eles
上不存在,并且length
在原型上不存在,仅存在于实例本身。而且您无法获得对底层getter / setter的引用,因为它们是完全透明的。但是,您可以:
var number = eles.length;
然后在吸气剂内部返回该数字:
return tmp;
但这仍然很糟糕,原因有三个:
1)NodeList是动态的,因此其长度可能会在中间变化,这将导致范围超出范围,并且意外错误也很严重。
2)您杀死了每一个认真的js引擎以前都会做的内联优化。在大多数浏览器中,for(const el of array)
实际上比摆弄索引要快。
3)它不会改变任何东西,因为它的属性查找很慢,而不是吸气剂本身。