シンプルな軽量every
機能を実装しました。arguments
変数が関数内で何らかの形で使用されている場合、実行時間が800ミリ秒から1300ミリ秒に増加することに気付きました(私の場合)。これは何が原因ですか?
Chrome 29.0.1547.66 mを使用しています。
function myEvery(list, fun, withArgument) {
var i;
fun = fun || function(val) { return val };
arguments; // with this statement the time is 1300 ms
// if you comment it out -- 800 ms
for (i = 0; i < list.length; i++) {
if (!fun.call(list, list[i], i)) {
return false;
}
}
return true;
};
// Create a huge array
var list = [];
for (i = 1; i < 20000000; i++) {
list.push(i);
}
// Measure the time
t1 = (new Date).getTime();
myEvery(list);
t2 = (new Date).getTime();
alert(t2 - t1);
arguments
(ステートメント自体を実行する時間を測定する場合は、0 ミリ秒です。)