Sind eval() und new Function() in JavaScript austauschbar?
Beim Arbeiten mit Zeichenfolgen, die JavaScript-Code enthalten, treten häufig zwei Funktionen auf: eval() und new Function(). Obwohl beide in einer Zeichenfolge eingebetteten Code ausführen können, weisen sie unterschiedliche Merkmale und Verhaltensweisen auf.
eval() vs. new Function(): Die wichtigsten Unterschiede
Das Code-Snippet verstehen
Das Code-Snippet Sie haben die unterschiedlichen Verhaltensweisen von eval() und new Function() demonstriert:
<code class="javascript">var evaluate = function(string) { return eval('(' + string + ')'); } var func = function(string) { return (new Function( 'return (' + string + ')' )()); }</code>
Beide Funktionen werten die Zeichenfolge „2 1“ aus und geben das Ergebnis zurück. Wenn Sie jedoch den Code ändern, um eine lokale Variable „a“ in die Funktion aufzunehmen, werden Sie feststellen, dass eval() auf die lokale Variable zugreifen und diese ändern kann, new Function() hingegen nicht.
Vorsichtsmaßnahmen und Best Practices
Eval() und new Function() bieten zwar praktische Möglichkeiten zum Ausführen von dynamischem Code, sollten jedoch mit Vorsicht verwendet werden:
In den meisten Fällen wird empfohlen, sich für die dynamische Codeausführung auf etablierte JavaScript-Sprachfunktionen zu verlassen, wie z. B. Vorlagenliterale oder den Funktionskonstruktor ohne neue.
Das obige ist der detaillierte Inhalt vonWann sollten Sie „eval()' vs. „new Function()' in JavaScript verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!