其实查看jQuery的源代码,发现each的代码很简单,但为什么性能和原生的for循环相差几十倍呢?
jQuery的each的核心代码
看着很简单,但为什么会慢很多呢?
编写测试代码如下:
运行测试,发现,第一个和第二个相差不是很大,这说明由于break这个判断导致的性能差异很少,但第二个和第三个,第四个偏差就就不止一倍了,而第二个和第三个唯一的区别就是调用了call,看来call会导致性能损失,因为call会切换上下文,当然jQuery的each慢还有其他原因,它还在循环中调用了其他的方法,call只是一个原因罢了。
性能的方法,在性能要求严格时,建议少用。
下面在通过一段代码看下jquery的each和js原生for循环性能对比
for与each性能比较