誰可以幫忙解釋一哈 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
傳遞arguments
給任何方法稱為leaking arguments
不幸的是,傳遞arguments給任何參數,將導致Chrome和Node中使用的V8引擎跳過對其的優化,這也將使性能相當慢。
withArguments
不會被V8優化,withCopy
那種 建議線上環境使用,雖然囉嗦。