Heim >Web-Frontend >js-Tutorial >Einführung in die Verwendung der Funktion eval() in JavaScript_Javascript-Kenntnissen

Einführung in die Verwendung der Funktion eval() in JavaScript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:23:081434Durchsuche

In JavaScript können Sie die Funktion eval() verwenden, um den JavaScript-Code in der Zeichenfolge zu analysieren und das entsprechende Codeausführungsergebnis zurückzugeben:


Code kopieren Der Code lautet wie folgt:

console.log(eval("42 * 2"));//84


Im Wesentlichen ist eval() eine Funktion des globalen JavaScript-Objekts. Der obige Code entspricht beispielsweise:


Code kopieren Der Code lautet wie folgt:

console.log(this.eval("42 * 2"));//84


Bei Verwendung der Anweisung eval () wird jedoch im Allgemeinen die erste oben genannte Methode angewendet, dh das globale Objekt wird ignoriert und eval () direkt verwendet.

Verwendung von eval()

Aus den folgenden zwei Gründen sollten Sie versuchen, die Verwendung der eval()-Anweisung in Ihrem Code zu vermeiden, es sei denn, dies ist wirklich notwendig: ​​

1. Logischerweise sollten Zeichenfolgen zum Speichern von Inhalten und Informationen während der Programmausführung und nicht zum Speichern spezifischer Berechnungslogik verwendet werden.
2. Da der eval()-Parameter ein String ist und ein String nicht lexikalisch verarbeitet werden kann, kann der JavaScript-Interpreter die eval()-Aufrufanweisung nicht optimieren.

Rückgabewert von eval()

Der Rückgabewert von eval() folgt den folgenden Regeln:

1. Wenn der Parameter von eval() kein String ist, gibt eval() den Parameter direkt zurück.
2. Wenn der Parameter von eval() eine Zeichenfolge ist, analysiert eval() die Zeichenfolge in Code, führt ihn aus und gibt das Ergebnis der letzten Codeausführungszeile zurück.
3. Wenn die Zeichenfolge nicht in legalen Code geparst werden kann, löst eval() einen SyntaxError aus.
4. Wenn die Zeichenfolge in legalen Code geparst werden kann, bei der Ausführung dieses Codes jedoch ein Fehler gemeldet wird, wird der Fehler an die eval()-Anweisung gemeldet und von eval() ausgelöst.

Code kopieren Der Code lautet wie folgt:

console.log(eval([1,2,3]));//[1, 2, 3]
console.log(typeof eval([1,2,3]));//object

console.log(eval("42 */ 2"));//SyntaxError
console.log(eval("42 * 2; 22 * ​​​​3;"));//66. eval gibt das Ergebnis des letzten Ausdrucks/der letzten Aussage zurück
console.log(eval("null.toString()"));//TypeError, Ausnahme im ausgewerteten Code wird außerhalb von eval() weitergegeben.

Variable Umgebung

Eval() in JavaScript verfügt über eine wichtige Funktion: Der Code in der Parameterzeichenfolge eval() kann auf Variablen im externen Code zugreifen und die neu erstellten Variablen im Parameterzeichenfolgencode auch externem Code zugänglich machen. Das heißt, wenn die Parameterzeichenfolge eval() legal analysiert werden kann, ersetzt JS die Zeile, in der sich eval() befindet, durch den analysierten Code:

Code kopieren Der Code lautet wie folgt:

//variable Umgebung
var a = 108;
console.log(eval("function double(x){return x*2;} a = double(a)"));
console.log(a);//216
console.log(double(33));//66


Es ist erwähnenswert, dass die Voraussetzung für die Realisierung der oben genannten Funktionen darin besteht, dass der Code in der Parameterzeichenfolge eval() legal analysiert werden kann. Neben der korrekten Syntax des Codes verlangt JS auch, dass der Code in der Parameterzeichenfolge eval() „eigenständig“ sein muss: Der Code darf nur für den Code in der Parameterzeichenfolge sinnvoll sein. Sie können beispielsweise keine Zeichenfolge wie „return;“ an die Funktion eval() übergeben:


Code kopieren Der Code lautet wie folgt:

Funktionstest(){
var s = "test";
eval("return s;");
}
test();//SyntaxError: return not in function


Wenn die Funktion eval() direkt verwendet wird, sind die Variablen, auf die der Code in der Parameterzeichenfolge eval() zugreift, die Variablen der Funktion, in denen sich die Anweisung eval() befindet, d. h. die von eval() verwendete Variablenumgebung. Funktion ist die „lokale Variablenumgebung“. Wenn Sie die Funktion eval() nicht direkt verwenden, sondern eine neue Variable verwenden, die auch auf die Funktion eval() verweist, sind die Variablen, auf die der Code in der entsprechenden Parameterzeichenfolge zugreift, globale Variablen, also die von verwendeten Variablen die eval()-Funktion. Die Umgebung ist die „globale Variablenumgebung“:


Code kopieren Der Code lautet wie folgt:

//lokale Variablenumgebung und globale Variablenumgebung
var umbenannt = eval;
var x = „Ursprung“, y = „Ursprung“;
Funktion f(){
var x = "neu";
eval("x = 'Changed';");
Rückgabe x;
}
Funktion g(){
var y = "neu";
umbenannt("y = 'Changed';");
gib y zurück;
}
console.log(f(), x);//newChanged origin
console.log(g(), y);//new originChanged


Es ist jedoch zu beachten, dass das Verhalten in IE6, 7 und 8 unterschiedlich ist. In IE6, 7 und 8 wird die „lokale Variablenumgebung“ weiterhin verwendet, auch wenn die Funktion eval() umbenannt wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn