Dies kann auch zu einer Maximum call stack size exceeded
Fehler:
var items = [];
[].push.apply(items, new Array(1000000)); //Bad
Das gilt auch für mich:
items.push(...new Array(1000000)); //Bad
Desde el Mozilla-Dokumente :
Aber Vorsicht: Wenn Sie apply auf diese Weise verwenden, laufen Sie Gefahr, die JavaScript-Engine die Längenbegrenzung für Argumente zu überschreiten. Die Folgen von Anwendung einer Funktion mit zu vielen Argumenten (mehr als zehntausend Argumente) tausende von Argumenten) sind je nach Engine unterschiedlich (JavaScriptCore hat hart kodierte Argumentgrenze von 65536), da die Grenze (ja sogar die Art des Verhaltens bei zu großen Stapeln) nicht spezifiziert ist. Einige Engines werden eine Ausnahme auslösen. Noch schlimmer ist, dass andere willkürlich die Anzahl der Argumente begrenzen, die tatsächlich an die angewandte Funktion. Zur Veranschaulichung des letzteren Falls: Wenn eine solche Engine eine Grenze von vier Argumenten hätte (die tatsächlichen Grenzen sind natürlich wesentlich höher), wäre es so, als wären die Argumente 5, 6, 2, 3 an apply in den obigen Beispielen übergeben worden wären, statt der gesamten Array.
Versuchen Sie es also:
var items = [];
var newItems = new Array(1000000);
for(var i = 0; i < newItems.length; i++){
items.push(newItems[i]);
}
4 Stimmen
Ich bekam diesen Fehler, als ich versuchte, Variablen (ohne sie zu deklarieren) zu senden, durch
data
in Ajax. Der Fehler wurde durch Deklaration der Variablen behoben.0 Stimmen
Endlosschleife ...
0 Stimmen
Bei mir war der Name meiner JavaScript-Funktion onclick() und ich bekam diesen Fehler :-) Dies sind zwar reservierte Namen