【发布时间】:2023-03-08 15:08:01
【问题描述】:
C# 也有类似的问题,但我们没有看到 JavaScript 的任何问题。
在循环中声明变量是否被接受?
假设一个循环有 200 次迭代。
使用样本 2 而非样本 1 是否有性能要求(内存和速度)?我们使用 jQuery 来循环。它提高了我们将 var 保留在循环内的代码可读性,但如果这不是最佳实践,或者会导致性能显着降低或内存使用量增加,我们将进行切换。
**Sample 1:**
$(this).each( function() {
var i = $(some_div).clone();
*** edit i ***
$(another_div).append( i );
});
**Sample 2:**
var i = null;
*** edit i ***
$(this).each( function() {
i = $(some_div).clone();
$(another_div).append( i );
});
【问题讨论】:
-
@Crashalot:在示例 1 中,每次迭代都会创建变量。在示例 2 中,变量被重用。你做过一些性能测试吗?
-
不,我们很想知道最佳实践,因为这一定是一种既定模式。我们假设因为 var 被重用,所以性能有所提高,但想知道是否有显着的优势。如果 vars 在循环内部,则代码更容易阅读,但如果速度和内存性能需要在外部声明,那么我们会这样做。
-
每个实现都可能不同。据您所知,无需进一步研究,任何给定的解释器都可以即时优化它并消除任何惩罚。
-
一个词法范围查找与非封闭变量。我想这种差异可以忽略不计,并且在浏览器之间会有很大差异。可能不值得理论上的性能提升。写出有意义的东西。
-
你的两个样本不等价。
标签: javascript jquery