Ce face eval
eval primește un șir de caractere, îl rulează ca cod și returnează valoarea ultimei expresii. Dacă primește altceva decât un text, returnează valoarea neschimbată.
Este considerat periculos: dacă textul conține date de la utilizator, acesta poate rula orice cod (atac de tip injecție). Este și lent, pentru că motorul nu poate optimiza codul din jur. Pentru JSON folosește JSON.parse, iar pentru calcule cu nume de proprietăți, parantezele pătrate: obiect[cheie].
Parametri
| Parametru | Descriere |
|---|---|
textCuCod |
Codul JavaScript, ca text. |
Ce returnează
Valoarea ultimei expresii din cod.
Exemple
Exemplul 1: Ce face și cu ce îl înlocuiești
console.log(eval("2 + 3 * 4"));
console.log(eval(42));
const date = '{"oras":"Iași"}';
console.log(JSON.parse(date).oras);
const obiect = { culoare: "verde" };
const cheie = "culoare";
console.log(obiect[cheie]);
Rezultat
14
42
Iași
verde
Greșeli frecvente
- Folosești
evalpentru a citi JSON sau pentru a accesa proprietăți după nume. Ambele au alternative sigure:JSON.parseșiobiect[cheie]. - Rulezi cu
evaltexte din adresa URL, formulare sau baze de date. Este cea mai sigură cale spre un atac XSS.
Comenzi înrudite
Function() / toString: Creează o funcție din text (constructorul Function) și afișează codul sursă al unei funcții (toString).JSON.parse: Transformă un text JSON într-un obiect sau tablou JavaScript.