Function() / toString în JavaScript

Structuri de control și funcții Toate browserele, Node.js

Creează o funcție din text (constructorul Function) și afișează codul sursă al unei funcții (toString).

Sintaxă
new Function("a", "b", "return a + b")
functie.toString()

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 Function din 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.