Eval() et new Function() sont-ils interchangeables en JavaScript ?
Lorsque vous travaillez avec des chaînes contenant du code JavaScript, deux fonctions apparaissent généralement : eval() et new Function(). Bien que les deux puissent exécuter du code intégré dans une chaîne, ils présentent des caractéristiques et un comportement distincts.
eval() vs new Function() : les principales différences
Comprendre l'extrait de code
L'extrait de code que vous avez fourni démontre les différents comportements de eval() et new Function() :
<code class="javascript">var evaluate = function(string) { return eval('(' + string + ')'); } var func = function(string) { return (new Function( 'return (' + string + ')' )()); }</code>
Les deux fonctions évaluent la chaîne "2 1" et renvoient le résultat. Cependant, si vous modifiez le code pour inclure une variable locale "a" dans la fonction, vous observerez que eval() peut accéder et modifier la variable locale, alors que new Function() ne le fera pas.
Précautions et bonnes pratiques
Bien que eval() et new Function() offrent des moyens pratiques d'exécuter du code dynamique, ils doivent être utilisés avec prudence :
Dans la plupart des cas, il est recommandé de s'appuyer sur les fonctionnalités établies du langage JavaScript pour l'exécution dynamique de code, telles que les littéraux de modèle ou le constructeur de fonction sans new.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!