Noms de variables identiques dans les fonctions en JavaScript

Supposons qu'il existe une variable num à la fois en dehors et à l'intérieur de la fonction. Dans ce cas, toute modification de la variable locale num n'affecte en rien la variable globale num :

javascriptlet num = 1; // variable globale

function func() {
  let num = 2; // variable locale
  console.log(num);
}
func(); // appelle la fonction, affichera 2

console.log(num); // affichera 1 - la variable globale n'a pas changé

Mais, si nous oublions de déclarer la variable locale num via let, alors à l'intérieur de la fonction aucune variable locale num ne sera créée, et la variable globale sera simplement modifiée :

javascriptlet num = 1;

function func() {
  num = 2; // oublié d'écrire let - on modifie la variable externe
  console.log(num);
}
func(); // appelle la fonction, affichera 2

console.log(num); // affichera 2 - la variable a changé

Deux situations sont possibles ici : soit nous voulions vraiment modifier la variable globale (alors tout va bien), soit nous avons oublié let et avons accidentellement modifié la variable globale.

Le second cas est une erreur difficile à détecter, conduisant à un comportement imprévisible du script. Par conséquent, déclarez toujours toute nouvelle variable en utilisant let.

Задание 1

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);