Przejdź do treści

Obiekt globalny - JS

eval

Jak napisać program, który pozwoli wykonać kod, wprowadzony przez użytkownika?

eval(x)
Parametry:
x - kod programu do natychmiastowego wykonania
Wartość:
wartość wyrażenia wykonanego kodu
x - jeżeli przekazany parametr nie jest prostym tekstem
Wyjątki:
SyntaxError - jeżeli kod do wykonania zawiera błąd składni

Funkcja pozwala dynamicznie wykonać dowolny kod ECMAScript już po uruchomieniu programu. Możemy np. utworzyć program, który pozwala użytkownikowi wprowadzać wyrażenia, a następnie prezentować mu ich wynik. Możemy również pobrać kod z zewnętrznego źródła, który następnie zostanie wykonany przez nasz program.

Używanie funkcji eval jest mało wydajnym sposobem uruchamiania kodu. Ponadto może być niebezpieczne dla aplikacji, ponieważ kod pobrany z zewnętrznego źródła - w tym od użytkownika - może zawierać złośliwe fragmenty, które negatywnie wpłyną na działanie aplikacji lub wykradną z niej jakieś sekretne dane.

Przykład eval

eval("2 + 2");    // 4
eval(1);          // 1
 
var x = true;
function f(a) {
    return a + '!';
}
eval("if (x) f('ok'); else f('error');"); // 'ok!'
 
eval('(');        // SyntaxError
eval('return 1'); // SyntaxError

Zwracam uwagę, że wywołanie konstruktora new String(...) zwraca obiekt, a nie prosty tekst. Zatem nie zostanie on wykonany przez funkcję eval, lecz zwrócony w niezmienionej formie:

eval(new String("2 + 2")); // new String("2 + 2")

Komentarze

Zobacz więcej komentarzy

Facebook