Aller au contenu principal

Résumé livre 01 You don't Know JS par Kyle Simpson

C'est quoi JS ?

  • JavaScript est un voyage, pas une destination : L'apprentissage de JavaScript est un processus continu. Peu importe le temps que vous passez avec le langage, vous trouverez toujours quelque chose de nouveau à apprendre et à comprendre un peu mieux.
  • JavaScript est multi-paradigme : JavaScript est un langage qui permet d'écrire du code procédural, orienté objet ou fonctionnel. Vous pouvez faire ces choix sur une base ligne par ligne, au lieu d'être forcé dans un choix tout ou rien.
  • Compatibilité ascendante et descendante : JavaScript est rétrocompatible, ce qui signifie que le code écrit dans le passé continuera à fonctionner dans le futur. Cependant, il n'est pas compatible avec les versions futures, ce qui signifie que le code utilisant de nouvelles fonctionnalités peut ne pas fonctionner dans les anciens moteurs JavaScript. ( BABEL )
  • Le web gouverne tout sur JavaScript : Bien que JavaScript soit utilisé dans de nombreux environnements, le web est l'environnement qui gouverne le plus JavaScript. Cela signifie que la façon dont JavaScript est implémenté pour les navigateurs web est la réalité la plus importante.
  • JavaScript a de nombreux visages : JavaScript peut être utilisé de différentes manières, en fonction du paradigme de programmation que vous choisissez. Il peut être utilisé de manière procédurale, orientée objet ou fonctionnelle.
  • JavaScript et le web : De nombreuses fonctionnalités qui ressemblent à JavaScript, comme alert(..) et console.log(..), ne sont pas définies par JavaScript lui-même, mais par l'environnement qui exécute le moteur JavaScript.
  • JavaScript et les spécifications : La syntaxe et le comportement de JavaScript sont définis dans la spécification ECMAScript.
  • Le comité technique TC39 gère la spécification officielle du langage.

En conclusion, JavaScript est un langage de programmation dynamique et polyvalent qui est constamment en évolution. Il est rétrocompatible, ce qui signifie que le code écrit dans le passé continuera à fonctionner dans le futur. Cependant, il n'est pas compatible avec les versions futures, ce qui signifie que le code utilisant de nouvelles fonctionnalités peut ne pas fonctionner dans les anciens moteurs JavaScript. Malgré sa complexité et ses nombreux visages, JavaScript reste un outil essentiel pour le développement web et au-delà.

  1. TC39. N'importe qui, qu'il soit membre de TC39 ou non, est invité à participer à ces discussions publiques et aux processus de travail sur les propositions.
  2. Compatibilité avec le web : JavaScript a une compatibilité ascendante, ce qui signifie que le code qui est accepté comme JavaScript valide ne deviendra pas invalide dans les futures versions du langage. Cela signifie que vous pouvez écrire du code en JavaScript en toute confiance, sachant que votre code ne cessera pas de fonctionner de manière imprévisible en raison d'une mise à jour du navigateur.
  3. Transpilation : Comme JavaScript n'est pas compatible avec les versions futures, les développeurs doivent prendre des mesures spéciales pour combler cet écart. Pour les nouvelles syntaxes incompatibles, la solution est la transpilation. La transpilation est un terme inventé par la communauté pour décrire l'utilisation d'un outil pour convertir le code source d'un programme d'une forme à une autre (mais toujours sous forme de code source textuel).

En résumé, JavaScript est un langage de programmation dynamique et polyvalent qui est constamment en évolution. Il est rétrocompatible, ce qui signifie que le code écrit dans le passé continuera à fonctionner dans le futur. Cependant, il n'est pas compatible avec les versions futures, ce qui signifie que le code utilisant de nouvelles fonctionnalités peut ne pas fonctionner dans les anciens moteurs JavaScript. Malgré sa complexité et ses nombreux visages, JavaScript reste un outil essentiel pour le développement web et au-delà.

Points Clés

  • Chaque fichier est un programme distinct avec des implications importantes pour la gestion des erreurs et la façon dont les fichiers interagissent entre eux.
  • Les valeurs en JavaScript peuvent être primitives ou des objets. Les primitives incluent les chaînes, les nombres, les booléens, null, undefined et les symboles. Les objets sont des collections non ordonnées de diverses valeurs.
  • Les variables en JavaScript doivent être déclarées avant d'être utilisées. Il existe trois mots-clés pour déclarer des variables : "var", "let" et "const".
  • Les fonctions en JavaScript sont des valeurs qui peuvent être assignées et passées autour. Elles peuvent recevoir des paramètres et renvoyer des valeurs.
  • JavaScript a plusieurs mécanismes pour permettre la comparaison de valeurs. L'opérateur "===" est souvent utilisé pour vérifier l'égalité, mais il ne vérifie pas l'égalité structurelle pour les objets, seulement l'égalité d'identité.
  • La coercition en JavaScript signifie qu'une valeur d'un type est convertie en sa représentation respective dans un autre type. Cela peut causer de la confusion lorsqu'il est utilisé avec des opérateurs de comparaison, en particulier l'opérateur "==" qui est souvent critiqué pour son comportement en matière de coercition.

Détermination du type de valeur

  • L'opérateur typeof peut être utilisé pour déterminer le type intégré d'une valeur, primitif ou objet.
  • typeof null retourne malheureusement "object" au lieu de "null".
  • La conversion d'un type de valeur à un autre est appelée "coercition".

Fonctions

  • Les fonctions en JavaScript peuvent être considérées comme des procédures qui peuvent être invoquées plusieurs fois, recevoir des entrées et renvoyer des sorties.
  • Les fonctions peuvent être déclarées en utilisant la syntaxe "function" ou définies en tant qu'expression affectée à une variable.
  • Les fonctions en JavaScript sont des valeurs d'objet et peuvent donc être attribuées et transmises.
  • Les fonctions peuvent recevoir des paramètres et renvoyer des valeurs en utilisant le mot-clé "return".
  • Les fonctions peuvent être définies en tant que propriétés sur des objets.
  • Il existe de nombreuses formes variées pour définir des fonctions en JavaScript.