Funkcja eval w JavaScript - 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")