Who can help explain the concept of Leaking arguments
<script>
Benchmark.prototype.setup = function() {
function otherFunc(a, b) {
return a + b;
}
function withArguments(x) {
var a = arguments;
return otherFunc.apply(x, Array.prototype.slice.call(a, 1));
}
function withCopy(x) {
var a = [];
var i, len = arguments.length;
for (i = 1; i < len; i += 1) {
a[i - 1] = arguments[i];
}
return otherFunc.apply(x, a);
}
某草草2017-07-05 10:44:40
Passing arguments
to any method is called leaking arguments
Unfortunately, passing arguments to any parameter will cause the V8 engine used in Chrome and Node to skip optimizing it, which will also make performance quite slow.
withArguments
will not be optimized by V8, withCopy
is recommended for use in online environments, although it is verbose.