Exercice 3/12

Dans le fichier "script.js" :

  • déclarez une variable globale texte avec le texte "Globale"(en dehors de la fonction);
  • déclarez la fonction display;
  • dans la fonction, déclarez la variable locale texte avec le texte "Locale";
  • la fonction doit afficher texte avec alert();
  • dans le script global, exécutez la fonction display;
  • dans le script global, ajoutez alert() pour afficher la variable globale;
  • cliquez sur "Soumettre ma réponse".

Remarque :

Ici les deux variables portent le même nom. Pendant l'exécution de la fonction, la valeur locale écrasera donc la valeur globale.

Mais une fois la fonction exécutée et la variable locale détruite, la valeur déclarée globalement ne sera plus écrasée.

Leçon 3/12

Si une fonction a accès à une variable globale, cela fonctionne-t-il dans le sens contraire ? Et bien non.

Une variable déclarée au sein même d'une fonction est une variable locale et elle n'est pas accessible dans le reste du script. Et ce pour la bonne raison que une fois la fonction exécutée, la variable locale est détruite.

Exemple :

// on déclare une fonction
function test() {
    var localVar = "Variable locale";
    alert(localVar);
}
// on exécute la fonction
test();
// on affiche directement localVar
alert(localVar);

Ici, la fonction test() va bien afficher "Variable locale" car la fonction a accès à la variable. Mais le alert() qui se trouve dans le script global va renvoyer undefined car il n'a pas accès à la variable déclarée dans la fonction.

Il faut donc faire attention à la portée d'une variable.

Globale ou locale ?

Faut-il donc déclarer toutes les variables globalement ?
Non, car si une variable n'est utilisée que dans une fonction, alors il suffit jsute de la déclarer localement dans la fonction. Elle ne sera pas utile dans le reste du script.

Commentaires les mieux notés

  • nkeshimanabrice-37

    nkeshimanabrice-37

    merci meriam

    le 11/04/2019 à 11h25

  • mickael.59300

    mickael.59300

    var texte = "Globale"; function display() {var texte = "locale"; alert(texte); } display(); alert(texte); ou est le soucis?

    le 04/04/2017 à 09h30

  • maksika

    maksika

    var texte = ("Globale"); function display () { var texte = ("Locale") alert (texte) } display (); alert(texte); Où est l'erreur ? Merci.

    le 12/03/2017 à 16h39

  • mram

    mram Admin

    Je pense, c'est juste qu'il manque une majuscule au texte ligne 3

    le 08/04/2017 à 08h24

  • bretel.val

    bretel.val

    Avez-vous bien déclaré la variable locale "texte"? Pourtant c'est bien le bon code

    le 07/06/2017 à 22h46

20 Commentaires

  • darek_kozaczek-68

    darek_kozaczek-68

    var texte = "Globale"; function display(){ var texte = "Locale"; alert(texte); } display(); alert(texte); //robot dit : Vous ne devez avoir qu'une alert

    le 29/06/2020 à 10h16

  • meriam

    meriam Admin

    Votre code est correcte, une mise à jour en cours merci pour votre compréhension.

    le 29/06/2020 à 21h19

  • sebastien.massera-44

    sebastien.massera-44

    Même message vous ne devez avoir qu'une Alert. var texte = "Globale"; function display() { var texte="Locale"; alert(texte); } display(); alert(text);

    le 17/06/2020 à 14h36

  • meriam

    meriam Admin

    Votre code est correct. Une mise à jour en cours, merci pour votre compréhension.

    le 17/06/2020 à 23h33

  • philip.boudin-27

    philip.boudin-27

    exercices 1, 2 et 3, toujours la meme erreur "Vous ne devez avoir qu'une alert". le code est juste, cela fonctionne mais l'appli ne veut pas les valider... un peu laborieux tout de meme... pour info, voici mon code

    le 17/06/2020 à 14h32

  • meriam

    meriam Admin

    Votre code est correct. Une mise à jour en cours, merci pour votre compréhension.

    le 17/06/2020 à 23h18

  • melyssa.auberton-21

    melyssa.auberton-21

    Voici mon code pour cet exercice, j'ai encore le message d'erreur "vous ne devez avoir qu'une seule alert"... var texte = "Globale"; function display () { var texte = "Locale"; alert(texte); } display(); alert(texte);

    le 11/06/2020 à 14h37

  • meriam

    meriam Admin

    votre dernier code fonctionne correctement.

    le 11/06/2020 à 15h06

  • nkeshimanabrice-37

    nkeshimanabrice-37

    merci meriam

    le 11/04/2019 à 11h25

  • yusuf_bj1997-17

    yusuf_bj1997-17

    Erreur(s) : "texte" doit contenir "Globale"

    le 30/07/2018 à 13h24

  • mram

    mram Admin

    Ligne 4 il faut déclarer la variable avec "var".

    le 04/08/2018 à 23h44

  • salamanders.officiel-69

    salamanders.officiel-69

    Il y a une faute de frappe dans l'énoncé à "variable globale" =)

    le 09/07/2018 à 17h51

  • mram

    mram Admin

    Merci pour le retour c'est corrigé.

    le 16/07/2018 à 04h32

  • soacynthiasoa-62

    soacynthiasoa-62

    Les parenthèses doivent être collés au nom de la fonciton...

    le 22/06/2018 à 00h21

  • arnaudfort-81

    arnaudfort-81

    il faut ajouter des espaces avant ET aprés le "=" de la déclaration locale, mais pas pour la déclaration de la variable globe, y à t'il une raison si oui (quelle est cette règle ? )

    le 29/03/2018 à 14h09

  • mram

    mram Admin

    Bonjour, il n'y a pas de règle. Les deux options sont correctes. Mais il y a des conventions et des bonnes pratiques. Généralement c'est mieux d'aérer son code donc on le vérifie le plus possible dans les exercices, mais pas partout comme vous le constater ici.

    le 01/04/2018 à 02h29

  • naim-khezzar

    naim-khezzar

    probleme.

    le 12/02/2018 à 00h41

  • mram

    mram Admin

    Bonjour, il manque un " e " à Locale

    le 12/02/2018 à 22h13

  • belespoir38

    belespoir38

    var texte= "Globale"; function display() { var texte= "Locale"; alert(texte); } display(); alert(texte); En ayant lu vos commentaires, l'erreur n'est pas qu'il manque une majuscule a texte valeur locale. Le cas échéant merci de validé, j'ai besoin de l'avancement en %. Permettez-moi de vous dire que tout ça est très fastidieux. Comment vont se passer les cours, déjà que je suis très en retard et à la limite du prête ?

    le 13/01/2018 à 22h44

  • mram

    mram Admin

    Bonjour, ajoutez juste un espace devant les signes = . Votre structure de code est correcte sinon.

    le 17/01/2018 à 18h57

  • mram

    mram Admin

    Ne vous inquiétez pas pour la progression en %. C'est surtout un indicateur pour nous de ce que les futurs élèves ont pu déjà faire avant de venir en formation. Et ce qui est proposé ici n'est pas comparable avec les cours et TD de la formation qui sont effectués en présentiel avec un prof. L'approche pédagogique n'est pas la même que d'être seul(e) face à son PC.

    le 17/01/2018 à 19h01

  • mram

    mram Admin

    Donc ne stressez pas par rapport à cela. Faites ce que vous pouvez ici ce sera très bien :)

    le 17/01/2018 à 19h02

  • nathalie.2080

    nathalie.2080

    bonjour,ça fonctionne mais exercice non validé...help

    le 27/12/2017 à 17h58

  • mram

    mram Admin

    Bonjour, votre code semble correct. Quelle erreur avez-vous ?

    le 30/12/2017 à 12h44

  • alexismoquet

    alexismoquet

    var texte='Globale'; function display () { var texte='Locale'; alert(texte); } display(); alert(texte); Ou est le probleme ? merci.....

    le 25/09/2017 à 16h18

  • mram

    mram Admin

    Bonjour, les parenthèses doivent être collées au nom de la fonction.

    le 29/09/2017 à 00h56

  • mram

    mram Admin

    Le code est bon, Ligne 3 ajoutez un espace après le signe =

    le 12/06/2017 à 15h05

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>Variable locale</title> <script src="script.js"></script> </head> <body> </body> </html>