Ce face Function() / toString
toString() pe o funcție returnează codul ei sursă, exact cum a fost scris. Pentru funcțiile predefinite returnează function nume() { [native code] }.
new Function(...parametri, corp) construiește o funcție din texte. Ca și eval, rulează cod creat la momentul execuției, deci este lent, greu de depanat și periculos dacă textul vine de la utilizator. Funcția creată vede doar variabilele globale, nu și pe cele locale.
Parametri
| Parametru | Descriere |
|---|---|
parametri..., corp |
Pentru constructor: numele parametrilor și corpul funcției, ca texte. |
Ce returnează
Constructorul: o funcție nouă. toString: un șir de caractere.
Exemple
Exemplul 1: Codul sursă al unei funcții
function aduna(a, b) {
return a + b; // comentariul se păstrează
}
console.log(aduna.toString());
console.log(Math.max.toString());
Rezultat
function aduna(a, b) {
return a + b; // comentariul se păstrează
}
function max() { [native code] }
Exemplul 2: O funcție construită din text
const formula = new Function("pret", "cantitate", "return pret * cantitate * 1.21;");
console.log(formula(10, 3).toFixed(2));
console.log(formula.length, formula.name);
Rezultat
36.30
2 anonymous
Greșeli frecvente
- Construiești funcții cu
new Functiondin texte primite de la utilizatori. Oricine poate rula cod în aplicația ta. Pagini cu Content Security Policy strictă blochează complet această funcție.
Comenzi înrudite
eval: Rulează un text ca și cum ar fi cod JavaScript; aproape niciodată nu este alegerea bună.function: Definește o funcție: un bloc de cod cu nume, pe care îl poți apela de câte ori ai nevoie.=> (arrow function): Scrie o funcție pe scurt, cu săgeata =>. Foarte folosită la map, filter și evenimente.