un simple assignment n'utilise pas un appel de fonction.cela se passe au travers de 8.7.1 GetValue qui renvoie la valeur si le type n'est pas une référence.
Et plutot que GetValue, c'est PutValue à qui il faut s'intéresser (dans la mesure où on assign un truc à la variable, on veut savoir ce que la ref de l'identifieur a pour base) après assignment
et quand c'est la spec on la quote, ou du moins il faut s'attendre à ce que les gens demandent l'extract auquel tu fais allusion.on peut le déplorer. on peut l'approuver. on peut imaginer ce que l'on veut. c'est la spec...
il n'y a rien a gober qui sortirait d'un chapeau. c'est la spec.
Si c'est pour expliquer comment ca marche, je vois pas pourquoi parler de v8 ou rhino, des exemples de codes sont suffisamment parlant mais ok pour l'amalgame.
l'important n'est pas ce qu'on passe à la fonction, mais comment on le passage.lorsqu'on passe une valeur à une fonction on peut l'utiliser mais pas la modifier
lorsqu'on passe une référence à une valeur à une fonction on peut modifier la valeur mais pas la référence.
Si l'on fait un passage par valeur, alors l'objet passé (que ca soit un primitif ou un objet) n'est pas modifiable
Si on fait un passage par référence, alors l'objet passé l'est.
En js, le passage se fait par valeur. La référence n'est pas modiable, mais l'objet référencé l'est.
Encore une fois, je préfère voir un extract de la spec (comme tu as fournis pour les fonctions) qui décrit le mécanisme plutot que ces def non appuyées.
Question à part:
1 - je ne vois pas pourquoi une variable d'un langage quelconque devrait forcément associer un type? et pas simplement contenir un int par exemple.toujours d'un point de vu purement théorique (donc indépendamment du l'implémentation) une variable c'est
un symbole, dans un contexte, associé à un type et une valeur.
même les langages les plus faiblement typé en passent par là.
Partager