ce post fait suite à celui ci dont je reprend le code javascript qui me pose des nouvelles questions ici .
J'essaie de faire attention au mots employés mais trop de choses implicites ou trop de contextes pour être précis compréhensible ....
NB ; les variables dans la console sont attaché a l onglet actif . Il faut fermer l onglet et réouvrir un nouveau onglet pour n'avoir aucune variables en mémoire .
NB le fait de copier plusieurs lignes de code javascript ( dans ce post) en une seule fois vers la console fait que la console vérifie la syntaxe et l'éxecute le code . si l'étape de la syntaxe et l'execution renvoie une erreur aucun code ne sera exécuté . Y a t il un moyen que la console exécute au moins les lignes qui sont exactes lors de la phase de vérification syntaxe et d'exécution ? ( cela me fait penser au comportement du code SQL )
rien que cette exemple montre quelque chose d'étonnant : le type Number se comporte comme une liste de clé/valeur !!
Je me demande maintenant
1) comment accéder à la valeur 3.14 selon le contenu de num ?
donc puis je affirmer qu'une variable object de type number ne peu contenir qu une clé de type PrimitiveValue et que l'on accède à sa valeur par un moyen différent des autres clés/valeurs !!
primitive value me fait penser en CSS à un anonymous region ou en javascript à une fonction anonyme
Enfin un article à lire intéressant sur le concept de [[PrimitiveValue]]
2)Comment avoir acces à la valeur 3.14 dans le dernier object num ( plusieurs key/value)?
[[PrimitiveValue]] n'a pas le comportement des clés : c , deux ,"texte" !!!
3) pourquoi javascript accepte
Ou est l interêt d utiliser un type Number si le comportement est celui d 'un Object ?
1_ ) je pense que toutes saisie d'entrée ( ici clavier) est convertie en caractère ( uncode/ glyph) sur un GUI pour les humains et en nombre en interne pour la machine mais cela ne semble pas la raison ( voir 2_)
2_) La vérification du au type Number se fait a l appel ( par un code explicite coder par le dev) en sortie pas en entrée !!!
Du fait que javascript est faiblement ( pas) typé cela implique t il le le développeur doit passer son temps à vérifier le type ( ajouter du code ) lorsque cela est nécessaire selon le contexte ? si oui ..vive typescript ....
Le language non typé me fait penser à la gestion de la mémoire et du concept de "garbage collector" de java . Le concept de "garbage collector " a laisser le choix aux développeurs d'écrire ou non le code de la gestion de la mémoire !! et je pense que peu de développeur écrivent eux même leur gestionnaire de mémoire .Pourquoi s obliger à écrire son gestionnaire de typage et se compliquer le debug avec javascript ?
J'avais lu de développer ( pas pour javascript) c'est en temps en gros 30% d' écriture du code et 70% de temps à debuger !!! Qu'est ce que cela doit être avec javascript pour ceux qui écrivent les librairies et les Frameworks ( pas les intégrateurs qui les utilisent )
Merci
Modifié par 75lionel (10 Jun 2016 - 01:44)
J'essaie de faire attention au mots employés mais trop de choses implicites ou trop de contextes pour être précis compréhensible ....
NB ; les variables dans la console sont attaché a l onglet actif . Il faut fermer l onglet et réouvrir un nouveau onglet pour n'avoir aucune variables en mémoire .
NB le fait de copier plusieurs lignes de code javascript ( dans ce post) en une seule fois vers la console fait que la console vérifie la syntaxe et l'éxecute le code . si l'étape de la syntaxe et l'execution renvoie une erreur aucun code ne sera exécuté . Y a t il un moyen que la console exécute au moins les lignes qui sont exactes lors de la phase de vérification syntaxe et d'exécution ? ( cela me fait penser au comportement du code SQL )
function f (o) { o.c = 3; }
var num=new Number(3.14);
num // Number {[[PrimitiveValue]]: 3.14}
console.log(num.c); // undefined
f(num); // undefined
console.log(num.c); //3
num.deux=2 //
num // Number {c: 3, [[PrimitiveValue]]: 3.14}
num.c // 3
num.texte="texte" //
// ne pas copier cette ligne lors du copier coller global des lignes dans la console
num.deux * num.texte // NaN
[
rien que cette exemple montre quelque chose d'étonnant : le type Number se comporte comme une liste de clé/valeur !!
Je me demande maintenant
1) comment accéder à la valeur 3.14 selon le contenu de num ?
num.[[PrimitiveValue]] // Uncaught SyntaxError: Unexpected token
parseFloat(num.toString()) //est la solution
num.valueOf() // est une autre solution
donc puis je affirmer qu'une variable object de type number ne peu contenir qu une clé de type PrimitiveValue et que l'on accède à sa valeur par un moyen différent des autres clés/valeurs !!
primitive value me fait penser en CSS à un anonymous region ou en javascript à une fonction anonyme
Enfin un article à lire intéressant sur le concept de [[PrimitiveValue]]
2)Comment avoir acces à la valeur 3.14 dans le dernier object num ( plusieurs key/value)?
num[[[PrimitiveValue]]] //syntaxe bracket ne fonctionne pas
num."[[PrimitiveValue]]" // syntax point ne fonctionne pas
var vals = Object.keys(num).map(function (key) {
return num[key];
});
//si num retourne Number {c: 3, deux: 2, texte: "texte", texte1: "texte1", [[PrimitiveValue]]: 3.14}
// alors vals contient [3, 2, "texte", "texte1"] ou est passé 3.14 ??!!!
num1= {c: 3, deux: 2, texte: "texte"} // Object {c: 3, deux: 2, texte: "texte"}
[[PrimitiveValue]] n'a pas le comportement des clés : c , deux ,"texte" !!!
3) pourquoi javascript accepte
num.texte="texte"
num //Number {texte: "texte", [[PrimitiveValue]]: 3.14}
Ou est l interêt d utiliser un type Number si le comportement est celui d 'un Object ?
1_ ) je pense que toutes saisie d'entrée ( ici clavier) est convertie en caractère ( uncode/ glyph) sur un GUI pour les humains et en nombre en interne pour la machine mais cela ne semble pas la raison ( voir 2_)
2_) La vérification du au type Number se fait a l appel ( par un code explicite coder par le dev) en sortie pas en entrée !!!
Du fait que javascript est faiblement ( pas) typé cela implique t il le le développeur doit passer son temps à vérifier le type ( ajouter du code ) lorsque cela est nécessaire selon le contexte ? si oui ..vive typescript ....
Le language non typé me fait penser à la gestion de la mémoire et du concept de "garbage collector" de java . Le concept de "garbage collector " a laisser le choix aux développeurs d'écrire ou non le code de la gestion de la mémoire !! et je pense que peu de développeur écrivent eux même leur gestionnaire de mémoire .Pourquoi s obliger à écrire son gestionnaire de typage et se compliquer le debug avec javascript ?
J'avais lu de développer ( pas pour javascript) c'est en temps en gros 30% d' écriture du code et 70% de temps à debuger !!! Qu'est ce que cela doit être avec javascript pour ceux qui écrivent les librairies et les Frameworks ( pas les intégrateurs qui les utilisent )
Merci
Modifié par 75lionel (10 Jun 2016 - 01:44)