suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Ändern sich Parameter beim rekursiven Aufruf in js?

Eine rekursive Funktion wie unten gezeigt. Warum erhöht sich args.concat(i) nicht entsprechend der Schleife? args ist ein Referenztyp, dieser args wird während der Schleife 0-9 einfügen.

var loop = (fn, n, args = []) => {
  if (n === 0) {
    return fn.apply(fn, args);
  }
  for (var i = 0; i <= 9; i++) {
    loop(fn, n - 1, args.concat(i)); // 这里的args.concat(i),在递归的每个栈都是“新”的
  }
}
loop((...a) => console.log(a), 2);
//结果: [0,0]  [0,1]  ...
phpcn_u1582phpcn_u15822836 Tage vor660

Antworte allen(2)Ich werde antworten

  • 世界只因有你

    世界只因有你2017-05-19 10:43:24

    因为args.concat是返回新的数组,不会影响原来的数组。

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:43:24

    var loop = (fn, n, args = []) => {
        if (n === 0) {
        return fn.apply(fn, args);
        }
      for (var i = 0; i <= 9; i++) {
        loop(fn, n - 1, args=args.concat(i)); // 这里的args.concat(i),在递归的每个栈都是“新”的
        }
    }
    loop((...a) => console.log(a), 2);

    Antwort
    0
  • StornierenAntwort