Explication de la syntaxe d'un code jQuery - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Explication de la syntaxe d'un code jQuery (/showthread.php?tid=6334) Pages :
1
2
|
Explication de la syntaxe d'un code jQuery - Damocorp - 20-08-2012 Bonjour, J'ai trouver ce code sur le net ( Source : L’effet machine à écrire ) : [pastebin]H3LadqLx[/pastebin] Pourriez-vus m'aider à traduire la ligne 18 de la syntaxe pour que je la comprenne svp ? C'est un peu le principe de l'opérateur ternaire en php si j'ai bien compris. Mais je n'arrive pas à comprendre son fonctionnement. En français cela donnerai : Si opt existe en paramètre de la fonction typewriter, opt est égal au paramètre de la fonction typewriter ou delay = 65. Mais je dois me tromper quelque part car à la ligne 13, c'est un tableau qui est appelé sous la forme de opt['delay']. Je ne comprend pas pourquoi firebug ne me renvoie pas une erreur pour variable undefined. RE: Explication de la syntaxe d'un code Jquery - Plume - 20-08-2012 opt est un objet. La ligne 18 dit : "Si opt est défini, alors on affecte la valeur opt à opt, ce qui équivaut à ne rien faire. Sinon, on lui donne des valeurs par défaut { 'delay': 65 }." Ça équivaut au code suivant :
De plus, en JavaScript opt.delay, c'est le même appel que opt['delay']. RE: Explication de la syntaxe d'un code Jquery - Maks - 20-08-2012 Souvent en Javascript pour gérer les paramètres optionnels on utilise un hash (ici "opt" pour "options") car on ne sait pas à l'avance combien de paramètres optionnels on aura, ce qui pause problème si on a un paramètre supplémentaire derrière les paramètres optionnels (ici callback). PS : void 0 j'ai toujours trouvé ça très très laid Ca me rappelle les saloperies de <a href="javascript : void(0)"></a> beurk ! RE: Explication de la syntaxe d'un code Jquery - Plume - 20-08-2012 C'est vrai. Désolé, j'ai pris l'habitude d'écrire du Vanilla à la sauce CoffeeScript
D'ailleurs, hors-sujet, mais un fait amusant :
Je me serai attendu à ce que compile en
Vous savez si il y a une explication ? Enfin, plutôt que
J'étais plutôt du genre à mettre
C'était déjà moins méchant. PS : Les gars, y a pas de syntaxe highlight pour CoffeeScript sur le forum ? RE: Explication de la syntaxe d'un code Jquery - Maks - 20-08-2012 void 0 a l'avantage d'être plus court que undefined, c'est intéressant pour minifier. La syntaxe est censée être valide JSLint donc je suppose qu'il y a une explication. Mais pour moi c'est la même chose aussi... Moi ce qui m'étonne c'est :
!= null c'est un peu léger, c'est suffisant sachant que null == void 0 et null == undefined mais pourquoi avoir quitté le double égal ? Bref le parfait HS là La réponse : https://github.com/jashkenas/coffee-script/issues/1869 EDIT : Pour toi _who : http://eliperelman.com/blog/2011/07/12/comparing-against-typeof-undefined-instead-of-undefined/ TL;DR undefined est une variable est peut être rédéfinie tandis que typeof... === "undefined" est plus "safe" RE: Explication de la syntaxe d'un code Jquery - Plume - 20-08-2012 Citation :!= null c'est un peu léger, c'est suffisant sachant que null == void 0 et null == undefined mais pourquoi avoir quitté le double égal ? Après avoir lu la réponse, ce que je ne sais pas c'est : Est-ce qu'à la compilation CoffeeScript sait si la variable comparée est dans le scope ? Si oui, fait-il le nécessaire, à savoir donc, utiliser typeof ? Merci pour le lien vers la comparaison avec typeof au lieu de undefined. Je sais donc maintenant la différence. Dois-je en conclure que le code rendu par CoffeeScript est inconsistent ? RE: Explication de la syntaxe d'un code Jquery - Maks - 20-08-2012 CoffeeScript sait que tu es dans le scope, car req.session.userId? est dans le contexte req.session et donc il se contente du test minimal userId != null Pour req?.session.userId, CoffeeScript sait que req risques d'être dans le scope global, et donc il effectue le test complet. C'est la même chose pour les variables d'instances / classiques : a? => typeof... car a est dans le scope global @a? => this.a != null car a est dans le contexte this De ce côté ça n'est pas consistant en effet. Peut être qu'il y a une volonté de réduire le code Javascript (cf. undefined => void 0) C'est comme ça que je le vois moi ^^ RE: Explication de la syntaxe d'un code jQuery - Plume - 20-08-2012 L'inconsistance que je soulevais était plutôt sur la comparaison dans un même scope.
options est dans les deux cas dans le même scope. Après, on dit que undefined est redéfinissable. Sauf que tu ne peux pas redéfinir undefined avec CoffeeScript. RE: Explication de la syntaxe d'un code jQuery - Maks - 20-08-2012 Citation :Sauf que tu ne peux pas redéfinir undefined avec CoffeeScript En pur CoffeeScript non, mais tu peux toujours : `var undefined = foo` Ce qui est débile je te l'accorde. La manière "officielle" de faire c'est avec le ?, après qu'il y ait des équivalences c'est normal. C'est le cas dans tous les langages, j’appellerais pas ça de l'"inconsitance" RE: Explication de la syntaxe d'un code jQuery - Damocorp - 20-08-2012 Citation :De plus, en JavaScript opt.delay, c'est le même appel que opt['delay'].Comment opt peut-être un objet et un array ? A moins que opt['delay'] ne soit pas un array ? Bien que le sujet va beaucoup plus loin que mes connaissance ( surtout quand ça passe par de l'anglais ), y'avais des trucs intéressant dedans mais j'ai pas su tout suivre. |