Maison interface Web js tutoriel Comprendre le levage JavaScript : un guide simple

Comprendre le levage JavaScript : un guide simple

Oct 06, 2024 pm 10:37 PM

Understanding JavaScript Hoisting: A Simple Guide

Si vous êtes nouveau dans JavaScript, vous avez peut-être rencontré des situations déroutantes où les variables semblent indéfinies ou des erreurs comme ReferenceError apparaissent de manière inattendue. Cela peut souvent être attribué à un concept connu sous le nom de levage. Mais qu'est-ce que le levage et comment cela affecte-t-il votre code ?

Dans ce guide, nous détaillerons le concept de levage et son fonctionnement en JavaScript. À la fin, vous comprendrez pourquoi le levage se produit et comment vous pouvez éviter les erreurs courantes.

Qu'est-ce que le levage ?
Le levage est le comportement de JavaScript consistant à déplacer les déclarations de variables et de fonctions vers le haut de leur portée avant l'exécution du code. Cela signifie que les déclarations (et non les affectations) sont traitées lors d'une phase de préparation avant l'exécution proprement dite de votre code.

JavaScript passe d'abord par une phase de création, où il alloue de la mémoire pour les variables et les fonctions. Cependant, la façon dont il gère les fonctions et les variables est légèrement différente.

Levage de fonction : définitions entièrement levées
Les fonctions déclarées à l'aide du mot-clé function sont hissées avec leur définition complète. Cela vous permet d'appeler ou d'utiliser une fonction avant sa déclaration effective dans le code.

Par exemple :


sum(5, 3); // Output: 8

function sum(a, b) {
  console.log(a + b);
}


Même si la fonction sum() est appelée avant d'être déclarée dans le code, elle fonctionne parfaitement car la déclaration de la fonction est hissée au sommet de sa portée lors de la phase de création.

Levage variable : var, let et const
Le levage variable se comporte différemment du levage de fonction, et cela varie selon que vous utilisez var, let ou const.

1. var Déclarations
Lorsque vous déclarez une variable à l'aide de var, elle est hissée au sommet de sa portée avec une valeur par défaut non définie. Cela signifie que vous pouvez accéder à la variable avant sa déclaration, mais jusqu'à ce que vous lui attribuiez une valeur, la variable restera indéfinie.


console.log(city); // Output: undefined
var city = "New York";
console.log(city); // Output: "New York"


Dans cet exemple, city est hissé avec une valeur indéfinie initialement. Une fois la valeur « New York » attribuée, la deuxième console.log() affiche correctement « New York ».

2. let et const Déclarations
Avec let et const, les variables sont également hissées, mais elles restent non initialisées. Cela signifie que si vous essayez d'y accéder avant leur déclaration, vous obtiendrez une ReferenceError.


console.log(name); // ReferenceError: Cannot access 'name' before initialization
let name = "John Doe";


Cette erreur se produit parce que les variables let et const existent dans quelque chose appelé la zone morte temporelle (TDZ) entre le début de leur portée et le point où elles sont réellement déclarées. Pendant ce temps, vous ne pouvez pas référencer la variable.

Différence clé entre let et const
let et const se comportent de la même manière en termes de levage, mais const vous oblige à attribuer une valeur lors de la déclaration, tandis que let vous permet de déclarer une variable sans attribuer immédiatement de valeur.


const name = "John Doe"; // Must be initialized
let age; // Can be declared without assignment


Le levage en pratique
Regardons un exemple qui démontre à la fois le levage de fonctions et de variables en action :


console.log(city); // Output: undefined
sum(3, 4);    // Output: 7

function sum(x, y) {
  console.log(x + y);
}

var city = "New York";
console.log(city); // Output: "New York"


Ici, la fonction somme est hissée avec sa définition complète, elle peut donc être appelée avant que la fonction ne soit déclarée. Cependant, la ville est hissée avec une valeur indéfinie, ce qui explique pourquoi le premier console.log() renvoie undéfini. Une fois l'affectation effectuée, la deuxième console.log() affiche la valeur correcte.

Conseils pour éviter les pièges du levage
Pour éviter les problèmes causés par le levage, suivez ces bonnes pratiques :

  1. - Utilisez let et const au lieu de var pour éviter d'accéder aux variables avant leur déclaration.
  2. - Déclarez les variables et les fonctions en haut de leur portée pour garantir que votre code se comporte de manière prévisible.

Récapitulatif des concepts clés du levage

  • Le levage fait référence au comportement de JavaScript consistant à déplacer les déclarations vers le haut de leur portée avant l'exécution du code.
  • Les fonctions déclarées avec function sont hissées avec leurs définitions complètes, ce qui permet de les utiliser avant d'être déclarées.
  • Les variables déclarées avec var sont hissées avec une valeur par défaut de undefined, tandis que les variables déclarées avec let et const restent non initialisées, provoquant une ReferenceError si elles sont accessibles avant la déclaration.
  • La zone morte temporelle (TDZ) s'applique à let et const, empêchant leur accès avant leur initialisation.

En comprenant le levage, vous pouvez éviter les problèmes courants en JavaScript et écrire du code plus prévisible. Avec la pratique, ces concepts deviendront une seconde nature.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JavaScript réalise l'effet de commutation d'image click-through: tutoriel professionnel JavaScript réalise l'effet de commutation d'image click-through: tutoriel professionnel Sep 18, 2025 pm 01:03 PM

Cet article présentera comment utiliser JavaScript pour réaliser l'effet de cliquer sur les images. L'idée principale est d'utiliser l'attribut Data- * de HTML5 pour stocker le chemin d'image alternatif et écouter des événements de clic via JavaScript, changez dynamiquement les attributs SRC, réalisant ainsi la commutation d'image. Cet article fournira des exemples de code et des explications détaillés pour vous aider à comprendre et à maîtriser cet effet interactif couramment utilisé.

Comment obtenir l'emplacement de l'utilisateur avec l'API Geolocation en JavaScript? Comment obtenir l'emplacement de l'utilisateur avec l'API Geolocation en JavaScript? Sep 21, 2025 am 06:19 AM

Tout d'abord, vérifiez si le navigateur prend en charge GeolocationAPI. Si vous êtes pris en charge, appelez getCurrentPosition () pour obtenir les coordonnées de l'emplacement actuelles de l'utilisateur et obtenir les valeurs de latitude et de longitude grâce à des rappels réussis. Dans le même temps, fournissez des exceptions de traitement des rappels d'erreur tels que l'autorisation de déni, l'indisponibilité de l'emplacement ou du délai d'attente. Vous pouvez également transmettre des options de configuration pour activer une précision élevée, définir le délai d'expiration et la période de validité du cache. L'ensemble du processus nécessite l'autorisation de l'utilisateur et la gestion des erreurs correspondante.

Comment créer un intervalle répétitif avec SetInterval dans JavaScript Comment créer un intervalle répétitif avec SetInterval dans JavaScript Sep 21, 2025 am 05:31 AM

Pour créer un intervalle de répétition dans JavaScript, vous devez utiliser la fonction setInterval (), qui exécutera à plusieurs reprises des fonctions ou des blocs de code à des intervalles de millisecondes spécifiés. Par exemple, setInterval (() => {Console.log ("Exécuter toutes les 2 secondes");}, 2000) publiera un message toutes les 2 secondes jusqu'à ce qu'il soit effacé par ClearInterval (Interpalid). Il peut être utilisé dans les applications réelles pour mettre à jour les horloges, les serveurs de sondage, etc., mais faire attention à la limite de retard minimum et à l'impact du temps d'exécution de la fonction, et effacez l'intervalle dans le temps lorsqu'il n'est plus nécessaire pour éviter les fuites de mémoire. Surtout avant la désinstallation des composants ou la fermeture des pages, assurez-vous que

L'API de composition Nuxt 3 a expliqué L'API de composition Nuxt 3 a expliqué Sep 20, 2025 am 03:00 AM

L'utilisation du noyau de l'API de composition de Nuxt3 comprend: 1. DefinePageMeta est utilisée pour définir les méta-informations de la page, telles que le titre, la mise en page et le middleware, qui doivent être appelées directement et ne peuvent pas être placées dans des déclarations conditionnelles; 2. Usyhead est utilisé pour gérer les balises d'en-tête de page, prend en charge les mises à jour statiques et réactives et doit coopérer avec DefinePageMeta pour obtenir l'optimisation du référencement; 3. USEASYNCDATA est utilisé pour obtenir en toute sécurité des données asynchrones, gérer automatiquement l'état de chargement et d'erreur et prend en charge le contrôle d'acquisition de données du serveur et du client; 4. UseFetch est une encapsulation de usEasyncdata et $ fetch, qui dépente automatiquement la clé de demande pour éviter les demandes en double

Pièges et solutions communes pour l'accès à l'élément DOM en JavaScript Pièges et solutions communes pour l'accès à l'élément DOM en JavaScript Sep 15, 2025 pm 01:24 PM

Cet article vise à résoudre le problème du retour null lors de l'obtention d'éléments DOM via document.getElementById () dans JavaScript. Le noyau consiste à comprendre le synchronisation d'exécution du script et l'état de l'analyse DOM. En plaçant correctement la balise ou en utilisant l'événement téléchargé DomContent, vous pouvez vous assurer que l'élément est à nouveau tenté lorsqu'il est disponible, en évitant efficacement de telles erreurs.

Formatage des nombres en javascript: utilisez la méthode TofixEd () pour conserver les décimales fixes Formatage des nombres en javascript: utilisez la méthode TofixEd () pour conserver les décimales fixes Sep 16, 2025 am 11:57 AM

Ce tutoriel explique en détail comment formater les numéros en chaînes avec deux décimales fixes en JavaScript, même les entiers peuvent être affichés sous la forme de "# .00". Nous nous concentrerons sur l'utilisation de la méthode numéro.prototype.tofixed (), y compris sa syntaxe, sa fonctionnalité, son exemple de code et des points clés à noter, comme son type de retour étant toujours une chaîne.

Comment copier du texte dans le presse-papiers en javascript? Comment copier du texte dans le presse-papiers en javascript? Sep 18, 2025 am 03:50 AM

Utilisez la méthode WriteText de ClipboardAPI pour copier du texte dans le presse-papiers, il doit être appelé dans le contexte de sécurité et l'interaction utilisateur, prend en charge les navigateurs modernes et l'ancienne version peut être dégradée avec EXECCOMAND.

Comment créer une chaîne multi-lignes en JavaScript? Comment créer une chaîne multi-lignes en JavaScript? Sep 20, 2025 am 06:11 AM

ThebestatorreatEAmulti-linestringinjavascriptsisingstingTemplatalalswithbackticks, qui sepresereBreakenexactlyAswritten.

See all articles