JavaScriptピットとテクニック:関数argments

1077 ワード

非厳格モードでは、関数の実行開始時に、argumentsの長さと実際の参加転送の個数が一致しています.もし実参加が少ないなら、複数のモジュラスはargumentsバインディングに影響しません.
  function f(x, y, z) {
      x = 100;
      arguments[2] = 10; //          ,arguments[2] z    
      z = 1; //       , arguments   
      console.log(arguments[0], arguments[1], arguments[2]);
      console.log(arguments.length); // arguments             ,      
      console.log(x, y, z);
    }
    f(3, 2); 
結果は以下の通りです100 2 102100 2 1厳密モードでは、関数のみが最初の相互マッピングを実行し、その後arguments参照との間の修正は互いに影響しない.
  function f(x, y, z) {
      'use strict'
      x = 100;
      z = 1;
      arguments[1] = 10;
      console.log(arguments[0], arguments[1], arguments[2]);
      console.log(x, y, z);
    }
  f(3, 2);
結果は以下の通りです3 10 undefined100 2 1矢印関数()=>{}ないarguments
    let fn = (i) => console.log(arguments);
    fn(11);
結果エラー:ReferenceError: arguments is not defined