11484 sujets

JavaScript, DOM et API Web HTML5

Salut,

je viens de voir cette fonction JS :


function roundToTwo(num) {    
    return +(Math.round(num + "e+2")  + "e-2");
}


je me demande.... à quoi sert le + dans le return + ??

merci de m'aiguiller
******************************************************
test dans chrome
******************************************************
Il faut ouvrir chrome
aller su n importe quel page web
appuyer sur la touche F12
allez dans l onglet console
copier la fonction et la coller dans la console
puis tester la fonctionn en l appelant avec pour argument une valeur
roundToTwo("5") /*return 5 */
roundToTwo(5) /*return 5 */
roundToTwo() /*return NaN */
roundToTwo("") /*return NaN */
roundToTwo(5a) /*return Uncaught syntaxError : missing ) after argument */
roundToTwo(a5) /*variable a5 so return a5 is not define if no var a5;*/
roundToTwo(a5) /*if var a5; .......so return NaN mean initilaisation;*/
roundToTwo(a5) /*if var a5=1......so return 1 mean affectation;*/
roundToTwo("5"a) /*return Uncaught syntaxError : missing ) after argument */
roundToTwo(a"5") /*return Uncaught syntaxError : missing ) after argument */
donc il y a un casting de string vers un number


le "+(Math" doit signifier "0+(Math ..."
"+" est une fonction méthode particulière du langage javascript appelé operator
en mathématique "+" est une addition
en javascript le signe/caractère "+" est utilisé pour l addition et la concaténation et logique https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

******************************************************
on peut tester dans la logique de "+" dans la console chrome
******************************************************
false /*return false*/
true /*return true*/
false+false /*return 0 */
true+true /*return 2*/
false+true /*return 1*/
true+false /*return 1*/

donc le moteur javascript de chrome interprète
-- false comme etant de type "number" ayant la valeur 0
-- true comme etant de type "number" ayant la valeur 1
il y a donc aussi un casting ( logique d implementation ?) de false et true en "number "
typeof(true+true) /*return "number"*/
true et false sont ils des alias d'une variable anonyme de type number ?


******************************************************
on peut tester la concatenation "+" dans la console chrome
******************************************************
"e3"+5 /*return "e35"*/
5+"e3" /*return "5e3"*/
quelque soit l ordre et le type des arguments , un arguments de type String ( syntax "" ) prevaut sur un number
il semble que un type object est aussi converti en type string
new String("4")+3

******************************************************
+ method function operator
******************************************************
typeof(+) /*return "UncaughtScript syntaxError : Unexpected token "*/
typeof(NaN) /*return "Number"*/
typeof(null) /*return "object"*/
typeof(+1) /*return "number"*/
typeof(roundToTwo) /*return "function"*/
typeof(roundToTwo(2)) /*return "number"*/
on peut connaitre le role , type class du mot "roundtotwo" mais pas du mot réservé au language javascript "+"
Modifié par 75lionel (02 Jul 2015 - 14:16)