Оптимизация Javascript V8 и «утечка аргументов»
Я читаю вразличные места что желательно быть осторожным сarguments
объект и что это нормально ...
var i = arguments.length, args = new Array(i);
while (i--) args[i] = arguments[i];
Но это нормально или нет? ...
function makeArray (l) {
var i = l.length, array = new Array(i);
while (i--) array[i] = l[i];
return array;
};
//...
//EDIT: put the function on an object to better represent the actual case
var o = {};
o.f = function (callback) {
var args = makeArray (arguments);
callback.apply(args[0] = this, args);
};
Что подразумевается под «утечкой аргументов» и как это влияет на оптимизацию?
Я сосредоточен на V8, но я предполагаю, что это относится и к другим компиляторам?
чтобы доказать это работает ...
function makeArray (l) {
var i = l.length, array = new Array(i);
while (i--) array[i] = l[i];
return array;
};
//...
//EDIT: put the function on an object to better represent the actual case
var o = {};
o.f = function (callback) {
var args = makeArray (arguments);
callback.apply(args[0] = this, args);
};
o.m = "Hello, ";
function test(f, n) {
alert(this.m + " " + n)
}
o.f(test, "it works...")