Maison > interface Web > js tutoriel > le corps du texte

Introduction aux déclarations de variables JS

PHPz
Libérer: 2024-09-04 14:32:02
original
751 Les gens l'ont consulté

Rédaction de ce guide pour le père qui construit alis4ops.com.

  • Je m'appelle "Baba".
  • Il apprend à créer des applications Web, anciennement ingénieur électricien.
  • Laissera quelques notes autour de l'article faisant référence à lui, afin que toute personne sur interwebz lisant ceci puisse ignorer ces lignes. J'espère que cela ne vous dérange pas !

Contexte

Nous avons les fonctions suivantes :

  • handleStartTouch
  • handleMoveTouch

Baba défini dans DragDrop.js

function handleStartTouch(event) {
    draggedElement = event.target;
    const touch = event.touches[0];
    touchStartX = touch.clientX - draggedElement.getBoundingClientRect().left;
    touchStartY = touch.clientY - draggedElement.getBoundingClientRect().top;
}

function handleMoveTouch(event) {
    event.preventDefault()
    if (draggedElement) {
        const touch = event.touches[0];
        // ..more code
    }
}
Copier après la connexion

Remarquez que nous accédons à draggedElement en ligne :

  • if (draggedElement) {

hanldeMoveTouch ne génère pas d'erreur lors de son appel.

Placer un point d'arrêt sur if (draggedElement) dans Chrome DevTools montrera que draggedElement se résout en le même élément html fourni par event.target dans handleStartTouch

Problème

Pourquoi pouvons-nous accéder à draggedElement dans handleMoveTouch même s'il est défini dans handleStartTouch

Plus génériquement, pourquoi peut-on accéder à une variable qui a été définie dans une fonction dans une autre fonction en javascript ?


Explication

Regardez la fonction handleStartTouch :

function handleStartTouch(event) {
    draggedElement = event.target;
    const touch = event.touches[0];
    touchStartX = touch.clientX - draggedElement.getBoundingClientRect().left;
    touchStartY = touch.clientY - draggedElement.getBoundingClientRect().top;
}
Copier après la connexion

Plus précisément la ligne :

    draggedElement = event.target;
Copier après la connexion

Il ne déclare pas le nom de la variable draggedElement en utilisant l'un ou l'autre des mots-clés

  • const
  • laisser
  • var

Par exemple, nous ne le définissons pas ainsi :

    const draggedElement = event.target;
Copier après la connexion

Déclaration de variable (alias mots-clés)

En Javascript, lorsque nous n'utilisons pas les déclarations de variables (également appelées mots-clés), javascript considère cette variable comme une variable globale.


Exercice

Considérons l'exemple suivant où nous définissons deux fonctions :

// Takes in two arguments and returns the sum
function add(x, y) {
  sum = x + y
  return sum
}

// prints sum if it is defined
function printStatus() {
  if (sum) {
    console.log("Sum: ", sum)
  } else {
    console.log("Sum does no exist")
  }
}
Copier après la connexion

Ouvrez DevTools dans Chrome

  • accéder à « Console »
  • Copiez et collez le code ci-dessus
  • Appuyez sur Entrée
  • Il reviendra indéfini, c'est bien.

Intro to JS Variable Declarations

Dans la console, appelez add(1,1)

  • vous verrez la console revenir 2
add(1,1)
=> 2
Copier après la connexion

Intro to JS Variable Declarations

Ensuite, appelez printStatus

  • Vous verrez la sortie Somme : 2

Intro to JS Variable Declarations

On peut voir que printStatus() peut accéder à la somme variable définie dans add(x, y)

C'est parce que la somme variable est déclarée sans les mots-clés suivants :

  • somme = x + y

Changeons maintenant add(x, y) add pour utiliser une déclaration de variable pour sum

// Takes in two arguments and returns the sum
function add(x, y) {
  const sum = x + y // use the variable declartion const
  return sum
}

// prints sum if it is defined
function printStatus() {
  if (sum) {
    console.log("Sum: ", sum)
  } else {
    console.log("Sum does no exist")
  }
}
Copier après la connexion
  • Aller sur Chrome
  • Actualisez la page avec Ctrl + R
    • vous pouvez également ouvrir un nouvel onglet et rouvrir la console devtools.

Définissons à nouveau les fonctions dans le journal de la console.

  • Copiez et collez l'extrait de code ci-dessus dans la console et appuyez sur Entrée.

Nous devons le redéfinir car nous avons lancé une nouvelle console de développement.

Intro to JS Variable Declarations

Maintenant dans la console, appelez add(2, 2)

  • vous verrez la console revenir 4

Intro to JS Variable Declarations

Appelez printStatus pour voir si vous pouvez accéder à la somme variable définie dans add(x, y)

printStatus()
> Uncaught ReferenceError: sum is not defined
    at printStatus (<anonymous>:9:3)
    at <anonymous>:1:1
Copier après la connexion

Intro to JS Variable Declarations

L'erreur indique que la somme n'est pas définie

Cela confirme que lorsqu'une variable est définie avec une déclaration de variable (const, let, var) dans une fonction, la portée de cette variable est uniquement dans la fonction

Lorsqu'une variable est définie sans déclaration de variable dans une fonction, la portée de cette variable est globale.

J'espère que cela aidera Baba (et tous ceux qui liront ceci.)

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!

source:dev.to
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal