L'éloquent JavaScript et les fonctions

Eloquent JavaScript - Vocabulaire

Le problème exposé dans ce sujet a été résolu.

Tu veux dire que toute initialisation de variable ne retourne rien ,c'est bien ça ? Si oui ça ne me pose aucun souci évidemment, c'est normal.

Ok, mais est-ce qu'une variable bar est quand même créée et initialisée comme dans une déclaration de fonction ? Sa portée se limiterait à la variable foo.

Tu veux dire que toute initialisation de variable ne retourne rien ,c'est bien ça ?

L'initialisation est une assignation. La valeur est retournée. C'est la déclaration de variable qui ne retourne rien.

1
2
3
4
5
6
x = 1;
> 1
var x;
> undefined
x
> 1
+0 -0

A part ça, c'est la première fois que je vois quelqu'un apprendre un langage et avoir envie de tout comprendre du langage. C'est assez admirable je trouve. Je te recommande vraiment de te plonger dans la spec de temps à autres pour trouver la réponse à certaines questions. C'est assez formateur à mon avis.

J'ai écrit un court à article à ce sujet en février et je pense que ça peut t'intéresser. Pour le contexte, je crois que c'est pas dit au début de l'article, JavaScript n'a pas vraiment de type Array. Les Array sont des array-like objects, donc en gros des objets presque comme les autres, et comme tous les objets JS leurs clés ne peuvent être que des strings. Tu peux accéder aux propriétés d'un objet o en faisant o.uneProp ou o['uneProp']. Du coup pourquoi on peut pas faire a.0 pour accéder à a[0] ?

C'est un peu anecdotique parce que la réponse à la question n'est pas fascinante, le but de l'article est de montrer comment répondre à la question, pas de donner la réponse.

[edit] avec le lien c'est mieux.

+0 -0

Ouais je travaille pas mal avec javascript. C'est un langage un peu con mais très marrant. On pourrait organiser des diners les mercredis soirs pour parler de javascript. Ça pourrait être aussi comique que navrant. :-°

+2 -0

Parce que 'transtypage' …

1
2
3
[] + {}

{} + []

Ce n'est qu'un exemple je suppose parmi tant d'autres … Comme dis victor, il y a certainement moyen d'en parler pendant des heures tellement il doit y avoir d'exempled …

+0 -0

Je veux pas relancer le débat qui s'était échauffé une fois à ce sujet sur ZdS, mais cet exemple est généralement très mal compris par les gens qui l'utilisent.

{} + [] est en réalité un block vide et + []. {} est un block, ici. On pourrait croire en voyant cet exemple qu'il s'agit de "liste plus objet" puis "objet plus liste", mais c'est pas le cas, c'est "liste plus objet" puis "plus liste".

+0 -0

Ahah ! Effectivement :

1
2
Object.create(null) + [] // Voir Object.prototype sinon qui donne le même résultat que {}
TypeError: Cannot convert object to primitive value

C'est rigolo.
Comme tu n'as pas envie de relancer le débat, je vais chercher comme un grand cette histoire de bloc …

Car c'est vraiment bizarre :

1
2
3
4
>  (h = {}) + []
'[object Object]'
> typeof h
'object'
+0 -0

Je pense que l'on oublie quelque chose de fondamental dans cette discussion, c'est que Javascript est un langage orienté objet à base de PROTOTYPES et non de CLASSES.

Comment peut-on tenter de maîtriser JS sans évoquer ce concept ?

Voici trois resources très utiles pour bien le comprendre :

[http://dmitrysoshnikov.com/ecmascript/javascript-the-core/] JavaScript: The Definitive Guide, 6th Edition The principles of object Oriented Javascript.

Les bouquins sont facilement trouvables sur le net.

J'ai lu : Eloquent JavaScript: A Modern Introduction to Programming. C'est pas mal mais il n'explique pas assez en profondeur les concepts clés du JS comme les prototypes, les scopes,…

Je pense que l'on oublie quelque chose de fondamental dans cette discussion, c'est que Javascript est un langage orienté objet à base de PROTOTYPES et non de CLASSES.

Comment peut-on tenter de maîtriser JS sans évoquer ce concept ?

Voici trois resources très utiles pour bien le comprendre :

[http://dmitrysoshnikov.com/ecmascript/javascript-the-core/] JavaScript: The Definitive Guide, 6th Edition The principles of object Oriented Javascript.

Les bouquins sont facilement trouvables sur le net.

J'ai lu : Eloquent JavaScript: A Modern Introduction to Programming. C'est pas mal mais il n'explique pas assez en profondeur les concepts clés du JS comme les prototypes, les scopes,…

Proktor

Juste pour "compléter", il y a aussi Programming JavaScript Applications qui parle de prototypes.

+0 -0

Je pense que l'on oublie quelque chose de fondamental dans cette discussion, c'est que Javascript est un langage orienté objet à base de PROTOTYPES et non de CLASSES.

Comment peut-on tenter de maîtriser JS sans évoquer ce concept ?

Voici trois resources très utiles pour bien le comprendre :

[http://dmitrysoshnikov.com/ecmascript/javascript-the-core/] JavaScript: The Definitive Guide, 6th Edition The principles of object Oriented Javascript.

Les bouquins sont facilement trouvables sur le net.

J'ai lu : Eloquent JavaScript: A Modern Introduction to Programming. C'est pas mal mais il n'explique pas assez en profondeur les concepts clés du JS comme les prototypes, les scopes,…

Proktor

Juste pour "compléter", il y a aussi Programming JavaScript Applications qui parle de prototypes.

Lern-X

Je complète ma réponse en précisant qu'Eloquent JavaScript aborde quand même la notion de prototype. Je ne sais pas s'il le fait de manière complète mais en tout cas c'est très bien expliqué : http://eloquentjavascript.net/06_object.html (CTRL + F : "Prototypes").

+0 -0

Je comprends pas du tout pourquoi tu t'énerves, c'est pas du tout le sujet de ce topic.

victor

Je suis hors-sujet mais je n'étais pas énervé :soleil:

Je pense que l'on oublie quelque chose de fondamental dans cette discussion, c'est que Javascript est un langage orienté objet à base de PROTOTYPES et non de CLASSES.

Comment peut-on tenter de maîtriser JS sans évoquer ce concept ?

Voici trois resources très utiles pour bien le comprendre :

[http://dmitrysoshnikov.com/ecmascript/javascript-the-core/] JavaScript: The Definitive Guide, 6th Edition The principles of object Oriented Javascript.

Les bouquins sont facilement trouvables sur le net.

J'ai lu : Eloquent JavaScript: A Modern Introduction to Programming. C'est pas mal mais il n'explique pas assez en profondeur les concepts clés du JS comme les prototypes, les scopes,…

Proktor

Juste pour "compléter", il y a aussi Programming JavaScript Applications qui parle de prototypes.

Lern-X

Je complète ma réponse en précisant qu'Eloquent JavaScript aborde quand même la notion de prototype. Je ne sais pas s'il le fait de manière complète mais en tout cas c'est très bien expliqué : http://eloquentjavascript.net/06_object.html (CTRL + F : "Prototypes").

Lern-X

Oui mais ça manière de la traiter n'est (pour ma part)pas assez détaillée, peu clair. Je pense que si je te demandais qu'elle est la différence entre

1
2
tonObjet.__proto__ 
TonObjet.prototype 

Peut-être que cela ne serait pas clair pour toi ?

Mais le débat n'est pas ici. Considère juste Eloquent javascript comme une douce introduction à JS et au prototype.

+0 -0

Je comprends pas du tout pourquoi tu t'énerves, c'est pas du tout le sujet de ce topic.

victor

Je suis hors-sujet mais je n'étais pas énervé :soleil:

Proktor

Je ne veux pas rajouter de l'huile sur le feu. Mais le gras et le caps-lock.
Moi aussi ça m'a parut un peu agassé comme message. Même si je comprend bien que ce n'était pas ton intension initiale.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte