dans JavaScript, l'un des façons fiables de convertir une chaîne en nombre A> est le numéro inspiré par cette question , j'ai commencé à me demander - quelle est la différence entre ce qui précède et: p> code> constructeur:
Number Code> semble certainement mieux, mais cela semble être une utilisation légèrement inappropriée d'un constructeur. Y a-t-il des effets secondaires ou une différence pour l'utiliser sans le nouveau
4 Réponses :
SPIDERMONKEY-1.7.0:
js> typeof new Number('09'); object js> typeof Number('09'); number
Dans le premier cas, vous utilisez le constructeur de numéros appelé comme une fonction , comme décrit dans la spécification, cela effectuera simplement une conversion de type, vous renvoyant un numéro Dans le second cas, vous utilisez le numéro code> primitif.
numéro code> constructeur
pour créer un numéro Objet EM>: P>
var x = Number('09');
typeof x; // 'number'
var x = new Number('09');
typeof x; // 'object'
Number('1') === new Number('1'); // false
Pour être juste, nouveau numéro ('1') === nouveau numéro ('1') code> est également
faux code>, mais je suis d'accord avec vous :)
Droite, car cela comparera deux références d'objet différentes.
@RICHARD SZALAY - mais, numéro ('1') === Numéro ('1') code> est
true code>, qui illustre le point de @ CMS.
Contrairement aux classes primitives boxées de Java, dans JavaScript, code> Number code> d'objets code> de STRUT> absolument aucune utilisation forte> . P> Je ne me soucierais pas d'utiliser numéro code> renvoie une valeur de numéro primitive. Oui, c'est un peu étrange que vous puissiez utiliser une fonction de constructeur comme une fonction simple, mais c'est simplement la définition de JavaScript. La plupart des types de langues intégrées ont des fonctionnalités supplémentaires étranges et incohérentes telles que celles-ci.
nouveau numéro code> construit un objet
coffret explicite code> objet. La différence: p>
numéro code>. Si vous souhaitez être explicite, utilisez
parsefloat ('09 ') code>; Si vous voulez être TERSE, utilisez
+ '09' code>; Si vous souhaitez autoriser uniquement des entiers, utilisez
parseint ('09 ', 10) code>. p> p>
+1, j'aimerais pouvoir accepter deux réponses comme correctes, car les deux sont correctement corrects et contiennent des informations utiles uniques. Je ne savais pas d'utiliser + code> sans numéro précédant.
numéro (sans nouveau) ne semble pas résulter exactement dans une primitive. Dans l'exemple suivant, le Nymmet méthod () est appelé (si dans le prototype de numéro).
3.anyMethod()