Funkce Javascript eval() (a proč ji NIKDY nepoužít)

JavaScript eval() funkce spustí řetězec jako JavaScript. Jedná se o obrovské bezpečnostní riziko protože při použití v produkci může třetím stranám umožnit spouštět vlastní kód ve vaší aplikaci.

syntaxe eval()

eval(string)

Všimněte si, že:

  • řetězec je řetězec, který obsahuje kód JavaScript
  • eval() vrátí hodnotu vrácenou spuštěním kódu v řetězci
  • Jen to nepoužívejte

Příklad Javascriptu eval()

Tento článek obsahuje pouze jeden příklad, abyste viděli, jak eval() funguje tak, že pokud náhodou spadnete na klávesnici a písmena E-V-A-L se zázračně zadají do vašeho kódu JavaScript, můžete to zjistit a odstranit.

let test = eval('2 + 2'); // Assign the result of the string as JavaScript to the variable test
console.log(test); // Will output 4

Co (ne)použít místo toho – Function()

Pokud z nějakého důvodu musíte bezpodmínečně spustit kód JavaScript z proměnné řetězce, použijte Funkci objekt místo toho. Zde je výše uvedený kód přizpůsobený k vytvoření Funkce objekt, který spustí kód dodaný z řetězce:

function twoPlusTwo(){
    return Function('return (2 + 2);')();
}
console.log(twoPlusTwo())

Upozorňujeme, že i tato metoda bude vysoce pravděpodobně blokována vaším webovým prohlížečem nebo webovým prohlížečem vašich uživatelů.

Technické podrobnosti o Funkci objekt, MDN vás pokryl

Ve skutečnosti byste se měli úplně vyhnout pokusům o spouštění kódu JavaScript z řetězců. Pokud to váš koncept vyžaduje, přehodnoťte strukturu kódu tak, aby to nebylo nutné.