Si je mets une fonction dans une chaîne comme ceci:
console.log(functionString);
4 Réponses :
Votre évaluer AS-Est fait le moteur JavaScript présent avec une syntaxe incorrecte (il n'y a pas de nom pour cette fonction). JavaScript s'attend à la construction de la fonction Donc, dans votre exemple, cela fonctionnera: p> parce que vous faites une fonction de fonction anonyme - quelque chose JavaScript peut vivre avec. p> Vous pouvez également utiliser des crochets juste, Ensuite, vous devez attribuer le résultat à quelque chose que vous pouvez utiliser ultérieurement: P> fonctionString code> contient exactement la chaîne
"fonction (message) {console.log (message);}" code> p>
(fonction () {}) () code> si vous souhaitez obtenir une fantaisie,
! Fonction () {} code> est également OK - la marque d'exclamation À l'avant, la transformation en expression booléenne nécessitant une évaluation de la fonction avant de nier la sortie. P>
eval ("(" + "+" ) ('ABC') "); code> p>
var foo = eval("("+functionString+")");
foo('ddd');
Travaux, merci! Pourriez-vous me dire ce que je devrais en savoir plus à ce sujet, par exemple le +
@ user1840267 pour Eval (), il est toujours logique d'imprimer la chaîne réelle que vous évaluez, puis de la copier-la coller dans l'éditeur de votre choix dans le fichier vide .js et de voir s'il est syntaxiquement correct.
Ah, je vois, il enveloppe simplement la fonction entre parenthèses! Je l'ai Merci!
Vous êtes presque là, mais vous manquez quelque chose.
Lorsque nous appelons ToString () sur votre fonction, nous obtenons p> que nous pouvons alors eval. Cependant, nous créons ici un objet de fonction anonyme ici; Nous ne pourrons pas l'appeler! p> Si nous au lieu de quelque chose comme: p> Nous pouvons alors faire ce qui suit p> < Pré> xxx pré> p>
Oui c'est possible en JavaScript, mais vous ne pouvez pas Donc, vous y passez comme si P> eval code> fonction anonyme sans attribution
var functionString = function (message) {
console.log(message);
}.toString();
eval("myfunction =" + functionString)
myfunction("Hello World!")
Votre vous pouvez couvrir cette chaîne à une expression de fonction immédiatement invoquée (iife) à l'aide de la concaténation de la chaîne, similaire à Ci-dessous. p> puis évaluer cela. Voici le résultat de la console JavaScript de Chrome: p> fonction de fonctionnement code> est une chaîne qui ressemble à
Cela aiderait si vous posteriez exactement ce qui est dans la chaîne.
Vous pouvez simplement faire "retour message.tostring ()" à l'intérieur de la fonction
Est-ce possible, oui, cela peut être, mais qu'essayez-vous de faire exactement?
Epascarello, je voudrais convertir la chaîne en une fonction. Brian, je ne veux pas appeler une fonction existante. Je voudrais convertir la chaîne entière en une fonction.
@Brianhamblen C'est une question différente de celle de celle-là. Dans cette question, ils ont le nom d'une fonction qu'ils souhaitent appeler.
On est obligé de remettre en question pourquoi i> vous voulez faire cela. L'évaluation du code arbitraire est considérée comme dangereuse dans presque toutes les langues qui ont la capacité.