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é.