La portée lexicale

SOMMAIRE

00:07 Rappel : résolution des variables
01:32 Autre exemple avec une nouvelle variable devise
02:11 Traductions française mauvaise, on mets VSCode en anglais
02:33 Analyse des sections avec le débogueur (global, local, closure)
03:52 Exécution du code avec la devise
04:33 Extraction de la définition de la fonction en dehors de sa fonction englobante
05:18 Définition de la portée lexicale
06:30 Le ramasse-miettes pourrait détruire la variable devise
07:45 Nouvelle version du code avec return (on retourne la fonction)
08:35 Explication avec un exemple du fonctionnement de la portée lexicale et de la définition d’une closure
09:38 Le ramasse-miettes ne pourra pas détruire la variable devise à cause de la closure !

CODE SOURCE

- Dépôt GitHub du code utilisé dans les leçons : https://github.com/javascriptdezero/module-avance

Module avancé

Acheter maintenantEn savoir plus

Introduction

  • C'est l'heure !
  • La valeur -0 et Object.is()
  • Les timestamps
  • Le format JSON2

Type de données

  • Le type BigInt
  • Quiz #1

De nouveaux opérateurs

  • Les courts-circuits
  • L'opérateur de coalescence des nuls2
  • L'opérateur de chaînage optionnel
  • Exercices remaniement de code

Les boucles

  • La méthode forEach()
  • Les boucles for...of
  • Les boucles for...in
  • Quelle façon de boucler choisir ?

Autres opérateurs

  • L'opérateur in
  • L'opérateur virgule

Gestion des erreurs

  • La syntaxe try... catch

Les tableaux

  • La méthode filter()
  • On recode filter() de zéro !
  • La méthode map()
  • On recode map() de zéro !2
  • La méthode reduce()
  • On recode reduce() de zéro !
  • Choisir entre filter(), map() et reduce()2
  • Le chaînage de méthodes
  • La méthode some()
  • Précision sur some() et every()
  • La méthode every()
  • La méthode at()
  • Challenge : recodez some() et every() !
  • Solution au challenge

Les objets

  • Nouveautés ES6 sur les objets
  • Accesseurs de propriétés (Getters et Setters)

Types de données avancés

  • Avant-propos
  • Introduction au ramasse-miettes (garbage collector)
  • WeakMap et WeakSet
  • TypedArray3
  • Les symboles
  • Les itérables et itérateurs

La décomposition (destructuring)

  • Assignation par décomposition de tableaux
  • Décomposition et itérateurs
  • Assignation par décomposition d'objets
  • L'opérateur spread

Les fonctions

  • Qu'est-ce que le hoisting ?
  • Valeurs par défaut des paramètres
  • Décomposition dans les paramètres de fonctions
  • Fonctions variadiques (paramètres du reste)
  • Nouvelle syntaxe de définition d'une méthode
  • Le mot-clé this
  • Les fonctions fléchées3
  • Les fonctions fléchées et this
  • thisArg et les méthodes sur les tableaux
  • Les méthodes call() apply() et bind()
  • Les fonctions imbriquées
  • La portée lexicale
  • Les closures2
  • Les closures : exemple supplémentaire8
  • IIFE
  • Les générateurs

L'héritage par prototypes

  • Préambule
  • Introduction
  • Les prototypes
  • Les fonctions constructeurs
  • Constructeurs et prototypes
  • Propriétés et méthodes statiques
  • Object.create()
  • Ce qu'il faut retenir
  • Exemple d'héritage

Les classes

  • Les classes
  • Classes VS Constructeurs
  • Les classes sont des fonctions2

Les modules

  • Le mode strict
  • Introduction aux modules
  • Les modules CommonJS
  • Modules ES6
  • CommonJS VS Modules ES6
  • Exemple module ES6 dans un site web
  • Utiliser un package npm2
  • Remaniement de code

Le JavaScript asynchrone

  • Les débuts du web
  • XMLHttpRequest
  • Callback hell
  • Les promesses
  • Projet API GitHub avec les promesses
  • Projet API GitHub avec fetch2
  • Comment mixer les modules ESM et CommonJS ?
  • La syntaxe async await

Fin du module

  • Derniers conseils