JavaScript - Riptutorial

Transcription

JavaScript#javascript

Table des matièresÀ propos1Chapitre 1: Démarrer avec JavaScript2Remarques2Versions2Examples3Utiliser l'API DOM3Utiliser console.log ()4introduction4Commencer4Variables de journalisation5Placeholders6Journalisation d'objets6Enregistrement d'éléments HTML7Note de fin7Utiliser window.alert ()Remarques78Utiliser window.prompt ()9Syntaxe9Exemples9Remarques9Utiliser l'API DOM (avec texte graphique: Canvas, SVG ou fichier image)Utiliser window.confirm ()911Remarques11Chapitre 2: .postMessage () et encerQu'est-ce que .postMessage () , quand et pourquoi l'utilisons-nous?1313

Envoi de messages13Réception, validation et traitement des messages14Chapitre 3: Affectation de mples16Destruction des arguments de la fonction16Renommer les variables lors de la destruction17Tableaux de destruction17Objets de destruction18Destructuration des variables internes19Utilisation des paramètres de repos pour créer un tableau d'arguments19Valeur par défaut lors de la destruction19Destruction imbriquée20Chapitre 4: AJAX22Introduction22Remarques22Examples22Utiliser GET et pas de paramètres22Envoi et réception de données JSON via POST22Affichage des principales questions JavaScript du mois à partir de l'API Stack Overflow23Utiliser GET avec des paramètres24Vérifier si un fichier existe via une requête HEAD25Ajouter un préchargeur AJAX25Écouter les événements AJAX au niveau mondial26Chapitre 5: Anti-patronsExamplesChaînage des assignations dans les déclarations var.Chapitre 6: API d'état de la batterie27272728Remarques28Examples28

Obtenir le niveau actuel de la batterie28La batterie est-elle en cours de chargement?28Laissez le temps restant jusqu'à ce que la batterie soit vide28Prenez le temps qu'il reste jusqu'à ce que la batterie soit complètement chargée29Événements de batterie29Chapitre 7: API de chiffrement Web30Remarques30Examples30Données cryptographiquement aléatoires30Création de résumés (par exemple SHA-256)30Génération d'une paire de clés RSA et conversion au format PEM31Conversion d'une paire de clés PEM en CryptoKey32Chapitre 8: API de der l'autorisation d'envoyer des notifications34Envoi de notifications35Bonjour35Fermer une notification35Événements de notification35Chapitre 9: API de les37Désélectionnez tout ce qui est sélectionné37Sélectionnez le contenu d'un élément37Récupère le texte de la sélection38Chapitre 10: API Fluent39Introduction39Examples39

Fluent API capturant la construction d'articles HTML avec JSChapitre 11: Arithmétique (math)3942Remarques42Examples42Ajout ( )42Soustraction (-)43Multiplication (*)43Division (/)43Reste / module (%)44Utiliser le module pour obtenir la partie fractionnaire d'un nombre45Incrementing ( )45Décrémenter (-)46Usages communs46Exponentiation (Math.pow () ou **)47Utilisez Math.pow pour trouver la nième racine d'un nombre.47Les 51Arrondir aux décimales51Entiers et flotteurs aléatoires52Opérateurs binaires53Bitwise ou53Bitwise et53Bitwise not53

Bit à bit xor (exclusif ou)53Décalage bit à gauche54Décalage binaire à droite (Décalage à propagation de signe) (Décalage à droite à re54Opérateurs d'assignation binaire55Obtenez aléatoire entre deux nombres55Aléatoire avec distribution gaussienne56Plafond et plancher57Math.atan2 pour trouver la direction57Direction d'un vecteur57Direction d'une ligne57Direction d'un point à un autre point58Sin & Cos pour créer un vecteur en fonction de la direction et de la distance58Math.hypot58Fonctions périodiques utilisant Math.sin59Simuler des événements avec des probabilités différentes61Little / Big endian pour les tableaux typés lors de l'utilisation d'opérateurs binaires62Obtenir le maximum et le minimum63Obtenir le maximum et le minimum d'un tableau:63Limiter le nombre à l'intervalle min / max64Obtenir les racines d'un nombre64Racine carrée64Racine cubique64Trouver des racines64Chapitre 12: Async Iterators65Introduction65Syntaxe65Remarques65Liens utilesExamplesLes basesChapitre 13: Attributs de données65656567

Syntaxe67Remarques67Examples67Accéder aux attributs de donnéesChapitre 14: BiscuitsExamples676969Ajouter et définir des cookies69Lecture des cookies69Supprimer les cookies69Teste si les cookies sont activés69Chapitre 15: Boucles71Syntaxe71Remarques71Examples71Standard "pour" les boucles71Utilisation standard71Déclarations multiples72Changer l'incrément72Boucle décrémentée72"while" Boucles72Boucle Standard Alors72Boucle décrémentée73Do . tandis que la boucle73"Pause" en boucle73Sortir d'une boucle73Sortir d'une boucle74"continuer" une boucle74Continuer une boucle "for"74Continuer une boucle while74boucle "do . while"75Casser des boucles imbriquées spécifiques75Briser et continuer les étiquettes75

"pour . de" boucleSupport de pour . de dans d'autres oucle "pour . dans"Chapitre 16: 80Créer une carte80Effacer une carte81Supprimer un élément d'une carte81Vérifier si une clé existe dans une carte82Cartes itératives82Obtenir et définir des éléments82Obtenir le nombre d'éléments d'une carte83Chapitre 17: Carte faible84Syntaxe84Remarques84Examples84Créer un objet WeakMap84Obtenir une valeur associée à la clé84Assigner une valeur à la clé84Vérifier si un élément avec la clé existe85Supprimer un élément avec la clé85Démo de référence faible85Chapitre 18: Chercher87Syntaxe87Paramètres87

Remarques87Examples88GlobalFetch88Définir les en-têtes de demande88Données POST88Envoyer des cookies89Obtenir des données JSON89Utilisation de l'extraction pour afficher les questions de l'API de dépassement de capacit89Chapitre 19: Coercition / conversion variable91Remarques91Examples91Conversion d'une chaîne en nombre91Conversion d'un nombre en chaîne92Double négation (!! x)92Conversion implicite93Conversion d'un nombre en booléen93Conversion d'une chaîne en booléen93Entier à Flotter94Flotter à Entier94Convertir une chaîne en float94Conversion en booléen94Convertir un tableau en chaîne95Array to String à l'aide de méthodes de tableau96Table de conversion primitive à primitive96Chapitre 20: Comment rendre l'itérateur utilisable dans la fonction de rappel asynchrone98Introduction98Examples98Code erroné, pouvez-vous savoir pourquoi cette utilisation de la clé entraînera des bogues98Écriture correcte98Chapitre 21: commentaires100Syntaxe100Examples100

Utiliser les commentaires100Ligne simple Commentaire //100Commentaire multiligne /**/100Utiliser des commentaires HTML en JavaScript (mauvaise pratique)Chapitre 22: Comparaison de dateExamples100103103Comparaison des valeurs de date103Calcul de la différence de date104Chapitre 23: Examples106Si / Sinon Si / Contrôle Else106Déclaration de changement108Critères d'inclusion multiples pour les cas109Opérateurs ternaires109Stratégie111En utilisant et && court-circuitant112Chapitre 24: Conseils de 13Évitez les tentatives / prises dans des fonctions critiques113Utiliser un mémoizer pour les fonctions de calcul intensif114Analyse comparative de votre code - mesure du temps d'exécution116Préférer les variables locales aux globales, aux attributs et aux valeurs indexées118Réutiliser les objets plutôt que de les recréer119Exemple A119Exemple b120Limiter les mises à jour DOM120Initialisation des propriétés d'objet avec null121

Être cohérent dans l'utilisation des nombresChapitre 25: 24Remarques124Ouvrir la console125Chrome125Firefox125Edge et Internet ples128Tabulation des valeurs - console.table ()128Inclure une trace de pile lors de la connexion - console.trace ()129Impression sur la console de débogage d'un navigateur130Autres méthodes d'impression131Temps de mesure - console.time ()132Compter - console.count ()133Chaîne vide ou absence d'argument135Déboguer avec des assertions - console.assert ()135Formatage de la sortie de la console136Style avancé136Utiliser des groupes pour indenter une sortie137Effacer la console - console.clear ()138Affichage interactif d'objets et de XML - console.dir (), console.dirxml ()138Chapitre 26: Constantes intégréesExamples141141Opérations qui renvoient NaN141Fonctions de bibliothèque mathématique renvoyant NaN141

Tester NaN avec isNaN fini et nul144L'infini et l'infini145NaN145Nombre de constantes146Chapitre 27: Contexte (ceci)Examples147147ceci avec des objets simples147Sauvegarde pour utilisation dans les fonctions / objets imbriqués147Contexte de la fonction de liaison148cela dans les fonctions constructeur149Chapitre 28: Cordes150Syntaxe150Examples150Informations de base et concaténation de chaînes150Cordes concaténantes151Modèles de chaînes151Citations échappant151Chaîne inverse152Explication153Couper les espaces154Substrings avec une tranche154Fractionner une chaîne en un tableau154Les chaînes sont unicode155Détecter une chaîne155Comparer les chaînes Lexicographiquement156Chaîne en majuscule157Chaîne en minuscule157Compteur de mots157

Caractère d'accès à l'index dans la chaîne157Fonctions de recherche et de remplacement de chaîne158indexOf( searchString ) et lastIndexOf( searchString )158includes( searchString, start )158replace( regexp substring, replacement replaceFunction )158Rechercher l'index d'une sous-chaîne dans une chaîne159Représentations de chaînes de nombres159Répéter une chaîne160Code de caractère161Chapitre 29: Déclarations et �affectation des constantes162Modification des constantes162Déclaration et initialisation des constantes163Déclaration163Types de données163Indéfini164Affectation164Opérations mathématiques et affectation165Incrémenter de165Décrémenter par165Multiplier par166Diviser par166Elevé au pouvoir de166Chapitre 30: Des cteur de classe169Méthodes statiques169

Getters et Setters170Héritage de classe171Membres privés171Noms de méthodes dynamiques172Les méthodes173Gestion de données privées avec des classes173Utiliser des symboles174Utiliser WeakMaps174Définir toutes les méthodes à l'intérieur du constructeur175Utilisation des conventions de dénomination175Liaison de nom de classeChapitre 31: Des symboles176177Syntaxe177Remarques177Examples177Les bases du type primitif de symbole177Conversion d'un symbole en chaîne177Utilisation de Symbol.for () pour créer des symboles partagés globaux178Chapitre 32: Détection du 9Méthode de détection des fonctionnalités179Méthode de la bibliothèque180Détection d'agent d'utilisateur180Chapitre 33: Données binaires182Remarques182Examples182Conversion entre Blobs et ArrayBuffers182Convertir un Blob en un ArrayBuffer (asynchrone)182Convertir un Blob en un ArrayBuffer utilisant une Promise (asynchrone)182Convertir un ArrayBuffer ou un tableau typé en un objet Blob183

Manipulation d'ArrayBuffers avec DataViews183Création d'un objet TypedArray à partir d'une chaîne Base64183Utiliser TypedArrays183Obtenir une représentation binaire d'un fichier image184Itérer via un arrayBuffer185Chapitre 34: ÉcranExamples187187Obtenir la résolution de l'écran187Obtenir la zone «disponible» de l'écran187Obtenir des informations de couleur sur l'écran187Propriétés de la fenêtre innerWidth et innerHeight187Largeur et hauteur de la page187Chapitre 35: Efficacité de la mémoireExamplesInconvénient de créer une véritable méthode privéeChapitre 36: Éléments Remarques190Examples190Enregistrement de nouveaux éléments190Extension d'éléments natifs191Chapitre 37: Remarques192Examples193Créer un ensemble193Ajout d'une valeur à un ensemble193Supprimer la valeur d'un ensemble193Vérifier si une valeur existe dans un ensemble194

Effacer un ensemble194Obtenir la longueur définie194Conversion des ensembles en tableaux194Intersection et différence dans les ensembles195Ensembles d'itération195Chapitre 38: Énumérations196Remarques196Examples196Enum définition en utilisant Object.freeze ()196Définition alternative197Impression d'une variable enum197Mise en œuvre des énumérations à l'aide de symboles197Valeur d'énumération automatique198Chapitre 39: Espace archivage sur le 200Utiliser localStoragelimites de localStorage dans les navigateurs200201Événements de stockage201Remarques202sessionStorage202Effacer le stockage203Conditions d'erreur203Supprimer un élément de stockage203Manière plus simple de manipuler le stockage204Longueur du stock local204Chapitre 40: Espacement des noms206Remarques206Examples206Espace de noms par affectation directe206

Espaces de noms imbriqués206Chapitre 41: Evaluer n et mathématiques208Evaluez une chaîne d'instructions JavaScript208Chapitre 42: ÉvénementsExamples209209Chargement de la page, du DOM et du navigateur209Chapitre 43: Événements envoyés par le serveur210Syntaxe210Examples210Configuration d'un flux d'événements de base sur le serveur210Fermer un flux d'événements210Liaison des écouteurs d'événements à EventSource211Chapitre 44: execCommand et 213Mise en forme213Ecouter les changements de contenu214Commencer214Copier dans le presse-papier à partir de textarea en utilisant execCommand ("copy")215Chapitre 45: Expressions 7

ExamplesCréer un objet RegExp217217Création standard217Initialisation statique218Drapeaux RegExp218Correspondance avec .exec ()219Match à l'aide de .exec()219Boucle à travers les correspondances à l'aide de .exec()219Vérifiez si la chaîne contient un motif en utilisant .test ()219Utiliser RegExp avec des chaînes219Match avec RegExp220Remplacez par RegExp220Split avec RegExp220Rechercher avec RegExp220Remplacement d'une chaîne avec une fonction de rappel220Groupes lisation de Regex.exec () avec des parenthèses regex pour extraire les correspondancesChapitre 46: File API, Blobs et 224Examples224Lire le fichier sous forme de chaîne225Lire le fichier en tant que dataURL225Trancher un fichier226Téléchargement csv côté client en utilisant Blob226Sélection de plusieurs fichiers et restriction des types de fichiers227Récupère les propriétés du fichier227Chapitre 47: Fonctions asynchrones (asynchrone / wait)228

troductionStyle de fonction de flèche228229Moins d'indentation229Attendre et priorité de l'opérateur229Fonctions asynchrones par rapport aux promesses230En boucle avec async attendent232Opérations asynchrones (parallèles) simultanées233Chapitre 48: Fonctions constructeur235Remarques235Examples235Déclaration d'une fonction constructeurChapitre 49: Fonctions de Examples237introduction237Portée et liaison lexicales (valeur de "this")238Objet Arguments239Retour implicite239Retour explicite240Arrow fonctionne comme un constructeur240Chapitre 50: 241Examples241

Fonctions du générateur241Sortie itération précoce242Lancer une erreur sur la fonction du générateur242Itération242Envoi de valeurs au générateur243Délégation à un autre générateur243Interface re des asynchrones avec des générateurs245Comment ça marche ?246Utilise le maintenant246Flux asynchrone avec générateurs246Chapitre 51: 48Obtenir la latitude et la longitude d'un utilisateur248Codes d'erreur plus descriptifs248Obtenir des mises à jour lorsque l'emplacement d'un utilisateur change249Chapitre 52: Gestion globale des erreurs dans les Examples250Gestion de window.onerror pour signaler toutes les erreurs sur le serveurChapitre 53: HéritageExamples250252252Prototype de fonction standard252Différence entre Object.key et Object.prototype.key252Nouvel objet du prototype252Héritage prototypique253

Héritage pseudo-classique255Définition du prototype d'un objet256Chapitre 54: mples258history.replaceState ()258history.pushState ()259Charger une URL spécifique à partir de la liste d'historique259Chapitre 55: datage haute résolution261Horodatages basse résolution261Prise en charge des navigateurs existants261Obtenir l'horodatage en quelques secondes262Chapitre 56: Test de disponibilité de la base de données indexée263Ouvrir une base de données263Ajouter des objets264Récupération des données265Chapitre 57: Insertion automatique du point-virgule - ASIExamples267267Règles d'insertion automatique des points-virgules267Instructions affectées par l'insertion automatique de points-virgules267Eviter l'insertion de points-virgules sur les instructions de retour268Chapitre 58: Intervalles et délais270

Syntaxe270Remarques270Examples270Les intervalles270Supprimer les intervalles271Supprimer les délais d'attente271Set récursifTimeout271setTimeout, ordre des opérations, clearTimeout272setTimeout272Problèmes avec setTimeout272Ordre des opérations272Annulation d'un délai d'attente273Les intervallesChapitre 59: JavaScript fonctionnel273275Remarques275Examples275Accepter des fonctions comme arguments275Fonctions d'ordre supérieur275Identité Monad276Fonctions pures278Chapitre 60: rques280Examples281Analyse d'une chaîne JSON simple281Sérialiser une valeur281Sérialisation avec une fonction de remplacement282Analyse avec une fonction de réanimation282Sérialisation et restauration d'instances de classe284JSON versus littéraux JavaScript285

Valeurs d'objets cycliquesChapitre 61: La boucle d'événementExamples287288288La boucle d'événement dans un navigateur Web288Opérations asynchrones et boucle d'événements289Chapitre 62: La gestion des tion avec les promesses290Objets d'erreur291Ordre des opérations plus pensées avancées291Types d'erreur293Chapitre 63: Le débogageExamplesPoints d'arrêt295295295Déclaration de débogueur295Outils de développement295Ouverture des outils de développement295Chrome ou Firefox295Internet Explorer ou Edge295Safari296Ajout d'un point d'arrêt à partir des outils de développementIDE296296Code Visual Studio (VSC)296Ajouter un point d'arrêt dans VSC296Passer à travers le code296Interruption automatique de l'exécution297Variables d'interpréteur interactif297Inspecteur d'éléments298Utiliser des seters et des getters pour trouver ce qui a changé une propriété299Casser quand une fonction est appelée300

En utilisant la console300Chapitre 64: Les xamples301Fonctionne comme une variableUne note sur le levageFonction anonyme301304304Définition d'une fonction anonyme304Affectation d'une fonction anonyme à une variable305Fourniture d'une fonction anonyme en tant que paramètre à une autre fonction305Renvoi d'une fonction anonyme à partir d'une autre fonction305Invoquer immédiatement une fonction anonyme306Fonctions anonymes auto-référentielles306Expressions de fonction immédiatement invoquées308Détermination de la fonction309Liaison this et arguments311Opérateur de liaison312Liaison des fonctions de la console aux variables312Fonction Arguments, objet "arguments", paramètres de repos et de propagation313objet arguments313Paramètres de repos: function (.parm) {}313Paramètres de propagation: function name(.varb);313Fonctions nommées314Les fonctions nommées sont hissées314Fonctions nommées dans un scénario récursif315La propriété name des fonctions316Fonction récursive317Currying317Utilisation de la déclaration de retour318

Passer des arguments par référence ou valeur320Appeler et appliquer321Paramètres par défaut322Fonctions / variables en tant que valeurs par défaut et paramètres de réutilisation323Réutiliser la valeur de retour de la fonction dans la valeur par défaut d'un nouvel appel:324valeur et longueur des arguments en l'absence de paramètres dans l'invocation324Fonctions avec un nombre inconnu d'arguments (fonctions variadiques)324Récupère le nom d'un objet fonction326Application partielle326Composition de la fonction327Chapitre 65: Les problèmes de sécurité328Introduction328Examples328Script intersite réfléchi (XSS)328rubriques328Atténuation:329Script intersite persistant (XSS)AtténuationScript inter-sites persistant à partir de chaînes de caractères JavaScriptAtténuation:329330330331Pourquoi les scripts d'autres personnes peuvent nuire à votre site Web et à ses visiteurs331Injection JSON évaluée331L'atténuation332Chapitre 66: Linters - Assurer la qualité du code334Remarques334Examples334JSHint334ESLint / JSCS335JSLint335Chapitre 67: Littéraux de modèleIntroduction337337

Syntaxe337Remarques337Examples337Interpolation de base et chaînes multilignes337Cordes brutes337Les chaînes marquées338Templating HTML With String Strings339introduction339Chapitre 68: Formatage des nombres341Mise en forme de la devise341Formatage de la date et de l'heure342Chapitre 69: Manipulation de donnéesExamples343343Extraire l'extension du nom de fichier343Format des nombres en argent343Définit la propriété d'objet en fonction de son nom de chaîne344Chapitre 70: Méthode d'enchaînementExamples345345Méthode d'enchaînement345Conception et chaînage d'objets à chaînes345Objet conçu pour être chaîné346Exemple d'enchaînement346Ne crée pas d'ambiguïté dans le type de retour346Convention de syntaxe347Une mauvaise syntaxe347Côté gauche de la mission348Résumé348Chapitre 71: Modals - Invites349

Syntaxe349Remarques349Examples349À propos des invites de l'utilisateur349Invite persistante modale350Confirmer pour supprimer l'élément350Utilisation de l'alerte ()351Utilisation de prompt ()352Chapitre 72: Mode strict353Syntaxe353Remarques353Examples353Pour les scripts entiers353Pour les fonctions354Modification des propriétés globales354Modification des propriétés355Comportement de la liste d'arguments d'une fonction356Paramètres dupliqués357Fonction de cadrage en mode strict357Listes de paramètres non simples357Chapitre 73: Modèles de conception comportementaleExamples359359Motif d'observateur359Modèle de médiateur360Commander361Itérateur362Chapitre 74: Modèles de conception Motif Singleton365Modules de module et de module révélateur366

Modèle de module366Modèle de module révélateur366Motif de prototype révélateur367Motif Prototype368Fonctions d'usine369Usine avec Composition370Motif d'usine abstraite371Chapitre 75: tions par défaut373Importer avec des effets secondaires374Définir un module374Importation de membres nommés depuis un autre module375Importer un module entier375Importation de membres nommés avec des alias376Exportation de plusieurs membres nommés376Chapitre 76: Mots-clés réservés377Introduction377Examples377Mots-clés réservés377JavaScript contient une collection prédéfinie de mots-clés réservés que vous ne pouvez pas377ECMAScript 1377ECMAScript 2377ECMAScript 5 / 5.1378ECMAScript 6 / ECMAScript 2015379Identifiants & IdentifiantChapitre 77: Nomenclature (modèle d'objet de navigateur)380383Remarques383Examples383

introduction383Méthodes d'objet de fenêtre384Propriétés de l'objet Window385Chapitre 78: Objet nir des données de base du navigateur et les renvoyer sous la forme d'un objet JSONChapitre 79: amples390Object.keys390Clonage peu profond390Object.defineProperty391Propriété en lecture seule391Propriété non énumérable392Description de la propriété de verrouillage392Propriétés de l'accesseur (get et set)393Propriétés avec des caractères spéciaux ou des mots réservés394Propriétés à tous les chiffres:394Noms de propriété dynamiques / variables394Les tableaux sont des objets395Object.freeze396Object.seal397Créer un objet Iterable398Repos objet / propagation (.)399Descripteurs et propriétés nommées399signification des champs et leurs valeurs par e d'objets401

Objet.assigner403Itération des propriétés d'objet404Récupération des propriétés d'un objet404Caractéristiques des propriétés:404But de l'énumérabilité:405Méthodes de récupération des propriétés:405Divers:406Convertir les valeurs d'un objet en tableau407Itération sur les entrées d'objet - Object.entries ()407Object.values ()408Chapitre 80: Opérateurs binairesExamplesOpérateurs binaires409409409Conversion en entiers 32 bits409Complément à deux409Bitwise AND409Bit à bit OU410Pas au bit410Bit par bit XOR411Opérateurs de poste411Décalage à gauche411Décalage à droite ( propagation de signe )411Right Shift ( remplissage à zéro )412Chapitre 81: Opérateurs binaires - Exemples du monde réel (extraits)Examples413413Détection de parité du nombre avec bit à bit ET413Échange de deux entiers avec bit par bit XOR (sans allocation de mémoire supplémentaire)413Multiplication plus rapide ou division par puissances de 2413Chapitre 82: Opérateurs Unaires415Syntaxe415Examples415L'opérateur unaire plus ( )415

Syntaxe:415Résultats:415La description415Exemples:415L'opérateur de suppression416Syntaxe:416Résultats:416La description417Exemples:417L'opérateur érateur de vide419Syntaxe:419Résultats:419La description419Exemples:420L'opérateur de négation unaire (-)420Syntaxe:420Résultats:420La description420Exemples:420L'opérateur NOT bitwise ( )421Syntaxe:421Résultats:421La description421Exemples:422L'opérateur logique NOT (!)Syntaxe:422422

Résultats:422La description422Exemples:423Vue d'ensembleChapitre 83: Opérations de s logiques avec des booléens425ET425OU425NE PAS425Égalité abstraite ( )4267.2.13 Comparaison d'égalité abstraite426Exemples:426Opérateurs relationnels ( , , , )427Inégalité428Opérateurs logiques avec des valeurs non booléennes (coercition booléenne)428Null et indéfini429Les différences entre null et undefined429Les similitudes entre null et undefined429Utiliser undefined430Propriété NaN de l'objet global430Vérifier si une valeur est NaN430Points à noter432Court-circuit dans les opérateurs booléens432Egalité abstraite / inégalité et conversion de type434Le problème434La solution435Tableau vide436Opérations de comparaison d'égalité436SameValue436

SameValueZero437Comparaison stricte de l'égalité437Comparaison d'égalité abstraite438Regroupement de plusieurs instructions logiques439Conversions de type automatique439Liste des opérateurs de comparaison440Champs de bits pour optimiser la comparaison de données multi-états440Chapitre 84: Optimisation d'appel de queue443Syntaxe443Remarques443Examples443Qu'est-ce que l'optimisation d'appel de queue (TCO)?443Boucles récursives444Chapitre 85: strer un employé de service445Web Worker445Un simple travailleur de service446main.jsQuelques choses:sw.js446446447Travailleurs Dédiés et Travailleurs Partagés447Résilier un travailleur448Remplir votre cache448Communiquer avec un travailleur Web449Chapitre 86: Politique d'origine et communication d'origine croisée451Introduction451Examples451Façons de contourner la politique de la même origine451

Méthode 1: CORS451Méthode 2: JSONP451Communication croisée d'origine sécurisée avec les messages452Exemple de fenêtre communiquant avec un cadre enfant452Chapitre 87: Portée454Remarques454Examples454Différence entre var et let454Déclaration de variable Données privées457Expressions de fonction immédiatement appelées (IIFE)458Levage458Qu'est-ce que le levage?458Limites du levage460Utiliser let in loops au lieu de var (exemple des gestionnaires de clic)461Invocation de méthode462Invocation anonyme462Invocation du constructeur463Invocation de la fonction flèche463Appliquer et appeler la syntaxe et l'appel.464Invocation liée465Chapitre 88: 466Remarques466Examples466Proxy très simple (en utilisant le trap trap)466

Recherche de propriété de propriétéChapitre 89: aîne de promesse468introduction470États et flux de contrôle470Exemple470Appel de fonction retard471En attente de multiples promesses simultanées472En attendant la première des multiples promesses simultanées473Valeurs "prometteuses"473Fonctions "prometteuses" avec rappels474La gestion des erreurs475Chaînage475Rejets non gérés476Mises en garde477Enchaînement avec fulfill et reject477Lancer de manière synchrone à partir d'une fonction qui devrait renvoyer une promesse478Renvoyer une promesse rejetée avec l'erreur479Enveloppez votre fonction dans une chaîne de promesses479Réconciliation des opérations synchrones et asynchrones479Réduire un tableau à des promesses chaînées480pourChaque avec des promesses481Effectuer un nettoyage avec finally ()482Demande d'API asynchrone483Utilisation de l'ES2017 async / waiting483Chapitre 90: Prototypes, objets485Introduction485Examples485

Prototype de création et d

Utiliser des commentaires HTML en JavaScript (mauvaise pratique) 100 Chapitre 22: Comparaison de date 103 Examples 103 Comparaison des valeurs de date 103 Calcul de la différence de date 104 Chapitre 23: Conditions 105 Introduction 105 Syntaxe 105 Remarques 106 Examples 106 Si / Sinon Si / Contrôle Else 106 Déclaration de changement 108