unterscheiden eval () und new function () in javaScript
In JavaScript begegnen Entwickler häufig zwei Funktionen, die eine ähnliche Aufgabe ausführen: Eval () und neue Funktion (). Während beide Funktionen Strings als Code bewerten, unterscheiden sich ihre zugrunde liegenden Mechanismen und Implikationen erheblich. Dies bedeutet, dass es Zugriff auf lokale Variablen hat, die im aktuellen Bereich definiert sind. Im Gegensatz dazu analysiert New Function () den in einer Zeichenfolge gespeicherten JavaScript -Code in ein Funktionsobjekt, das dann aufgerufen werden kann. Dieses Funktionsobjekt wird in einem separaten Bereich erstellt und kann daher nicht auf lokale Variablen der Anrufumgebung zugreifen. return eval ('(' String ')'); } var func = function (string) { return (neue Funktion ('return (' String ')') ()); } console.log (evaluate ('2 1')); console.log (func ('2 1'));
Beide Funktionen geben das erwartete Ergebnis von 3. aus. Wenn wir den Code jedoch so ändern, dass lokale Variablen verwendet werden, wird der Unterschied offensichtlich: function test1 () {{{{{{ var a = 11; eval ('(a = 22)'); // modifiziert die lokale Variable innerhalb der Funktion `test1` Alarm (a); // Alarms 22 }
in diesem Fall würde die Verwendung von Eval () die lokale Variable A ändern, da die Bewertung im Bereich der Test1 -Funktion stattfindet. Wenn wir jedoch eine neue Funktion verwendet haben ('return (a = 22);') () Stattdessen würde die lokale Variable A nicht betroffen bleiben, weil der Code in einem separaten Bereich ausgeführt wird. Bösartige Eingaben können möglicherweise vertrauliche Informationen freisetzen oder willkürlichen Code ausführen. Daher wird dringend empfohlen, diese Funktionen zu vermeiden, es sei denn, dies ist absolut notwendig.
schlussfolgerung
in Zusammenfassung, Eval () und New Function () arbeiten in JavaScript unterschiedlich. Eval () bewertet Zeichenfolgen innerhalb des aktuellen Ausführungsbereichs, während die neue Funktion () einen neuen Bereich für die Bewertung erstellt. Das Verständnis dieser Unterscheidung ist entscheidend für eine effektive JavaScript -Programmierung und die Aufrechterhaltung der Sicherheit.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3