Il y a même une raison encore plus fondamentale, qui est que la fonction isNaN() peut s'appliquer à des types de valeurs qui ne sont pas des objets (les types primitifs undefined, null, boolean, number et string), alors qu'une méthode de classe ou d'instance ne peut s'appliquer, par définition, qu'à un type objet. Par exemple, tu ne peux pas exécuter l'instruction 3.toString() !
Remarque judicieuse, mais comme javascript fournit un mécanisme d'autoboxing, je ne suis pas sûr que ce problème pourrait se rencontrer en réalité.
L'instruction 3.toString() échoue pour des raisons de grammaire (l'opérateur "." attend la déclaration d'une partie décimale, ce n'est pas, dans ce contexte, l'opérateur d'accès à une propriété); mais l'instruction (3).toString() fonctionne en montant temporairement le littéral 3 en new String(3).
var tests = [ (3).isNaN(), // false (false).isNaN(), // false ("a").isNaN(), // true (new Object()).isNaN(), // true ];
alert(tests.join("n")); ---
Bonne journée, Elegie.
On 14/11/2011 09:03, Olivier Miakinen wrote :
Bonjour,
Il y a même une raison encore plus fondamentale, qui est que la fonction
isNaN() peut s'appliquer à des types de valeurs qui ne sont pas des
objets (les types primitifs undefined, null, boolean, number et string),
alors qu'une méthode de classe ou d'instance ne peut s'appliquer, par
définition, qu'à un type objet. Par exemple, tu ne peux pas exécuter
l'instruction 3.toString() !
Remarque judicieuse, mais comme javascript fournit un mécanisme
d'autoboxing, je ne suis pas sûr que ce problème pourrait se rencontrer
en réalité.
L'instruction 3.toString() échoue pour des raisons de grammaire
(l'opérateur "." attend la déclaration d'une partie décimale, ce n'est
pas, dans ce contexte, l'opérateur d'accès à une propriété); mais
l'instruction (3).toString() fonctionne en montant temporairement le
littéral 3 en new String(3).
Il y a même une raison encore plus fondamentale, qui est que la fonction isNaN() peut s'appliquer à des types de valeurs qui ne sont pas des objets (les types primitifs undefined, null, boolean, number et string), alors qu'une méthode de classe ou d'instance ne peut s'appliquer, par définition, qu'à un type objet. Par exemple, tu ne peux pas exécuter l'instruction 3.toString() !
Remarque judicieuse, mais comme javascript fournit un mécanisme d'autoboxing, je ne suis pas sûr que ce problème pourrait se rencontrer en réalité.
L'instruction 3.toString() échoue pour des raisons de grammaire (l'opérateur "." attend la déclaration d'une partie décimale, ce n'est pas, dans ce contexte, l'opérateur d'accès à une propriété); mais l'instruction (3).toString() fonctionne en montant temporairement le littéral 3 en new String(3).
var tests = [ (3).isNaN(), // false (false).isNaN(), // false ("a").isNaN(), // true (new Object()).isNaN(), // true ];
alert(tests.join("n")); ---
Bonne journée, Elegie.
Olivier Miakinen
Le 14/11/2011 10:42, Elegie m'a répondu :
Il y a même une raison encore plus fondamentale, qui est que la fonction isNaN() peut s'appliquer à des types de valeurs qui ne sont pas des objets (les types primitifs undefined, null, boolean, number et string), alors qu'une méthode de classe ou d'instance ne peut s'appliquer, par définition, qu'à un type objet. Par exemple, tu ne peux pas exécuter l'instruction 3.toString() !
Remarque judicieuse, mais comme javascript fournit un mécanisme d'autoboxing, je ne suis pas sûr que ce problème pourrait se rencontrer en réalité.
Ah oui, bien vu. Je ne connaissais pas le terme « autoboxing », mais je suppose qu'il signifie « conversion implicite en objet ».
L'instruction 3.toString() échoue pour des raisons de grammaire (l'opérateur "." attend la déclaration d'une partie décimale, ce n'est pas, dans ce contexte, l'opérateur d'accès à une propriété); mais l'instruction (3).toString() fonctionne en montant temporairement le littéral 3 en new String(3).
var tests = [ (3).isNaN(), // false (false).isNaN(), // false ("a").isNaN(), // true (new Object()).isNaN(), // true ];
alert(tests.join("n")); ---
Merci pour la correction, et pour les tests.
Cordialement, -- Olivier Miakinen
Le 14/11/2011 10:42, Elegie m'a répondu :
Il y a même une raison encore plus fondamentale, qui est que la fonction
isNaN() peut s'appliquer à des types de valeurs qui ne sont pas des
objets (les types primitifs undefined, null, boolean, number et string),
alors qu'une méthode de classe ou d'instance ne peut s'appliquer, par
définition, qu'à un type objet. Par exemple, tu ne peux pas exécuter
l'instruction 3.toString() !
Remarque judicieuse, mais comme javascript fournit un mécanisme
d'autoboxing, je ne suis pas sûr que ce problème pourrait se rencontrer
en réalité.
Ah oui, bien vu. Je ne connaissais pas le terme « autoboxing », mais je
suppose qu'il signifie « conversion implicite en objet ».
L'instruction 3.toString() échoue pour des raisons de grammaire
(l'opérateur "." attend la déclaration d'une partie décimale, ce n'est
pas, dans ce contexte, l'opérateur d'accès à une propriété); mais
l'instruction (3).toString() fonctionne en montant temporairement le
littéral 3 en new String(3).
Il y a même une raison encore plus fondamentale, qui est que la fonction isNaN() peut s'appliquer à des types de valeurs qui ne sont pas des objets (les types primitifs undefined, null, boolean, number et string), alors qu'une méthode de classe ou d'instance ne peut s'appliquer, par définition, qu'à un type objet. Par exemple, tu ne peux pas exécuter l'instruction 3.toString() !
Remarque judicieuse, mais comme javascript fournit un mécanisme d'autoboxing, je ne suis pas sûr que ce problème pourrait se rencontrer en réalité.
Ah oui, bien vu. Je ne connaissais pas le terme « autoboxing », mais je suppose qu'il signifie « conversion implicite en objet ».
L'instruction 3.toString() échoue pour des raisons de grammaire (l'opérateur "." attend la déclaration d'une partie décimale, ce n'est pas, dans ce contexte, l'opérateur d'accès à une propriété); mais l'instruction (3).toString() fonctionne en montant temporairement le littéral 3 en new String(3).