首頁  >  問答  >  主體

javascript - 洩漏參數

誰可以幫忙解釋一哈 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);
  }
怪我咯怪我咯2669 天前840

全部回覆(1)我來回復

  • 某草草

    某草草2017-07-05 10:44:40

    傳遞arguments給任何方法稱為leaking arguments

    不幸的是,傳遞arguments給任何參數,將導致Chrome和Node中使用的V8引擎跳過對其的優化,這也將使性能相當慢。

    withArguments 不會被V8優化,withCopy 那種 建議線上環境使用,雖然囉嗦。

    回覆
    0
  • 取消回覆