我正在做2个简单的测试,并在google devtools时间轴中对其进行概要分析。
在函数外部声明变量并在for循环中为其分配新值似乎会分配大量内存,并反复触发垃圾回收器。
另一方面,在函数范围内声明变量将分配较少的内存或根本不分配任何内存。
这是第一种情况:
(function() {
function createVars() {
var i;
var b;
for (i = 0; i < 10000; i += 1) {
b = Math.random();
}
requestAnimationFrame(createVars);
};
requestAnimationFrame(createVars);
}())
第二个:
(function() {
var b;
function createVars() {
var i;
for (i = 0; i < 10000; i += 1) {
b = Math.random();
}
requestAnimationFrame(createVars);
};
requestAnimationFrame(createVars);
}())
我本来期望相反或至少类似的行为。
最佳答案
第一种情况,您每次调用“createVars”时都会创建一个“b”变量。
第二种情况,您仅使用一个变量。总是一样。 :)