Différence entre eval et parseFloat ?

Signaler
Messages postés
65
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
-
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
-
Bonjour,

Je n'ai pas très bien saisi la différence entre eval() et parseFloat() puisque tous les deux retournent la valeur numérique d'une variable non ?

Merci d'avance !!

5 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,
    pas tout à fait....

    début de ce que je lis sur selfhtml
    ( à lire pour plus d'infos )

    eval()
Interprète un argument à transmettre et renvoie le résultat.
Si l'argument
transmis peut être interprété comme une opération de calcul, l'opération est
effectuée et son résultat est retourné...
   
    parsefloat()
Transforme la chaîne de caractères transmise en nombre et renvoie la valeur
numérique de celle-ci...


   

<hr />Cordialement Bul [mon Site] [M'écrire]<hr />
Messages postés
65
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011

oui, en fait j'avais lu l'explication aussi sur le même site lol mais je ne vois pas tellement la nuance entre les 2 et quand utiliser l'un ou l'autre...
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
alert(parseFloat("123.45"));
var a=10;
alert(eval("(1+10+9)/a"));
alert(eval("(a>9)"));               par exemple...
<hr />                Cordialement        Bul     [mon Site]     [M'écrire]<hr />
Messages postés
111
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
1 août 2008

Bonjour,

Pour clarifier la situation je vais dire que javascript est un language interprété, c'est à dire que l'on peut à partir d'une chaine de caractere interpreter celle-ci et executer le code qui est contenu dans cette chaine de caractere.

Eval permet donc d'evaluer une chaine de caractere et d'executer son contenu apres interpretation...
(le contenu de cette chaine de caractere peut donc être n'importe quoi en javascript, appel de fonction, opération mathématique,...)
exemple : eval('alert(\'Hello world\')')

Alors que parseFloat lui se contente de retourner le float contenu dans la chaine de caractere...
exemple : parseFloat('42yajev')

Henri
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
13
parseFloat() n'a qu'une seule fonction : retourner une valeur flottante à partir de la chaine qu'on lui passe en argument.

eval() est une fonction d'analyse très puissante qui est capable de faire beaucoup de choses :
Si l'argument qu'on lui passe est
une chaine représentant une expression arithmétique, elle l'interprète, l'évalue et retourne le résultat
une chaine de code javascript, elle l'interprete, l'éxécute et retourne le résultat,
un nom d'objet du document, elle retourne une référence à cet objet,
un flux xml (venant d'un fichier par exemple), elle construit et retourne un tableau d'objets xml,
un flux json (format objet javascript), elle constuit et retourne un tableau d'objets json,
etc.

La contrepartie de la puissance de la fonction eval() est qu'elle est tellement puissante qu'elle peut permettre à un utilisateur de faire exécuter du code javascript à ton propre programme. Il est donc fortement déconseillé d'utiliser cette fonction pour interpréter du texte saisi par un utilisateur, ou alors prendre d'infinies précautions pour ne pas laisser cette fonction faire n'importe quoi. Le mieux est même d'utiliser d'autres fonctions que eval() pour analyser les saisies utilisateur (comme parseFloat(), par exemple)