Globale veranderlikes in funksies in JavaScript

In JavaScript (in ander tale is dit meestal nie so nie) sal veranderlikes wat buite 'n funksie gedefinieër word, binne daardie funksie sigbaar wees. Sulke veranderlikes word globale veranderlikes genoem. Laat ons na 'n voorbeeld kyk:

javascriptlet num = 1; // veranderlike buite funksie

function func() {
  console.log(num); // veranderlike num is sigbaar binne funksie
}

func(); // sal 1 uitvoer

Eintlik moet die veranderlike gedefinieër word nie voor die definisie van die funksie nie, maar voor die roeping daarvan:

javascriptfunction func() {
  console.log(num);
}

let num = 1; // veranderlike buite funksie
func();      // sal 1 uitvoer

As jy die waarde van die veranderlike verander en daarna die funksie elke keer roep - sal console.log elke keer verskillende resultate lewer:

javascriptfunction func() {
  console.log(num);
}

let num; // verklaar die veranderlike

num = 1; // stel waarde 1
func();  // sal 1 uitvoer

num = 2; // stel waarde 2
func();  // sal 2 uitvoer

As ons verskeie funksies het, sal die globale veranderlike beskikbaar wees in elk van hierdie funksies:

javascriptfunction func1() {
  console.log(num);
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // sal 1 uitvoer
func2(); // sal 1 uitvoer

As een van die funksies veranderinge aan die globale veranderlike maak, sal daardie veranderlike verander in alle funksies wat dit gebruik:

javascriptfunction func1() {
  console.log(num);
  num++; // verander globale veranderlike
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // sal 1 uitvoer
func2(); // sal 2 uitvoer

Aangesien enige funksie die globale veranderlike maklik kan verander, is die gebruik daarvan 'n broeineste van moeilik-opspoorbare foute. Om hierdie rede moet die gebruik van globale veranderlikes in die skrip tot 'n minimum beperk word. Dit is wenslik dat daar glad geen of die minste moontlike hoeveelheid is.

Задание 1

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgevoer sal word:

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

func();
Задание 2

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgevoer sal word:

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

num = 2;
func();
Задание 3

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgevoer sal word:

javascriptfunction func() {
  console.log(num);
}

let num;

num = 1;
func();

num = 2;
func();