eval() ist eine globale Funktion. JavaScript verwendet eval(), um eine Zeichenfolge aus Javascript-Quellcode zu interpretieren und auszuführen
var result = eval('3+2'); console.log(result,typeof result);//5 'number'
Verwendung
eval() hat nur einen Parameter. Wenn der übergebene Parameter kein String ist, wird dieser Parameter direkt zurückgegeben. Wenn der Parameter eine Zeichenfolge ist, wird die Zeichenfolge als Javascript-Code kompiliert. Wenn die Kompilierung fehlschlägt, wird eine syntaxError-Ausnahme ausgelöst. Wenn die Kompilierung erfolgreich ist, beginnt die Ausführung dieses Codes und der Wert des letzten Ausdrucks oder der letzten Anweisung in der Zeichenfolge wird zurückgegeben. Wenn der letzte Ausdruck oder die letzte Anweisung keinen Wert hat, wird schließlich undefiniert zurückgegeben. Wenn die Zeichenfolge eine Ausnahme auslöst, übergibt diese Ausnahme den Aufruf an eval()
var num = 1; var str = 'test'; console.log(eval(num));//1 console.log(eval(str));//ReferenceError: test is not defined var strLong1 = 'var x = 1;var y = 2;'; console.log(eval(strLong1),x,y);//undefined 1 2 var strLong2 = 'var x = 1; x++;'; console.log(eval(strLong2),x);//1 2
scope >
eval () verwendet die Variablenbereichsumgebung, in der es aufgerufen wird. Das heißt, es sucht nach dem Wert einer Variablen und definiert neue Variablen und Funktionen genauso wie der Code im lokalen Bereich
var b = 2; function foo(str,a){ eval(str); console.log(a,b); } foo('var b = 3;',1);//1 3
Wenn eval() über einen Alias aufgerufen wird, führt es seine Zeichenfolge als globalen Code der obersten Ebene aus. Der ausgeführte Code kann neue globale Variablen und globale Funktionen definieren oder globalen Variablen Werte zuweisen, kann jedoch keine lokalen Variablen in der Funktion
verwenden oder ändern
var geval = eval; var x = 'global',y = 'global'; function f(){ var x = 'local'; eval('x += "changed";'); return x; } function g(){ var y = 'local'; geval('y += "changed";'); return y; } console.log(f(),x);//localchanged global console.log(g(),y);//local globalchanged
JavaScript Interpreter Viel Code-Analyse und -Optimierung. Das Problem bei eval() besteht darin, dass der für die dynamische Ausführung verwendete Code normalerweise nicht analysiert werden kann, sodass der Interpreter ihn nicht optimieren kann, was zu Leistungseinbußen führt
Ähnlich wie eval() ist setTimeout() , setInterval(), new Function() usw. Diese Funktionen können Zeichenfolgen als Parameter annehmen und dynamisch ausgeführt werden, wenn das Programm ausgeführt wird. Die Vorteile dieses Ausführungsmechanismus können den Leistungsverlust nicht ausgleichen, daher sollten Sie versuchen, die Verwendung des
aufgrund von eval( )-Funktion ist zu mächtig und der strikte Modus erlegt ihr strenge Einschränkungen auf
[1] Variablen oder Funktionen können nicht über die Funktion eval() erstellt werden, ihre Werte können jedoch abgefragt und geändert werden
'use strict'; eval('var x = 1;'); console.log(x);//ReferenceError: x is not defined 'use strict'; var x = 1; eval('x = 2;'); console.log(x);//2
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Definition, Verwendung und Nebenwirkungen der globalen JavaScript-Funktionsbewertung sowie weitere Beispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!