Javascript V8-Optimierung und "undichte Argumente"

Ich lese inverschiedene Ort, dass es ratsam ist, mit dem @ vorsichtig zu searguments Objekt und das ist in Ordnung ...

    var i = arguments.length, args = new Array(i);
    while (i--) args[i] = arguments[i];

Aber ist das in Ordnung oder nicht? ...

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);
};

Was ist mit "undichten Argumenten" gemeint und wie wirkt es sich auf die Optimierung aus?

Ich konzentriere mich auf V8, aber ich gehe davon aus, dass es auch für andere Compiler gilt?

um zu beweisen, dass es funktioniert ...

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...")

Antworten auf die Frage(4)

Ihre Antwort auf die Frage