Pembolehubah Global dalam Fungsi di JavaScript

Dalam JavaScript (dalam bahasa lain selalunya tidak begitu) pembolehubah yang ditakrifkan di luar fungsi, akan kelihatan di dalam fungsi tersebut. Pembolehubah sedemikian dipanggil pembolehubah global. Mari lihat contoh:

javascriptlet num = 1; // pembolehubah di luar fungsi

function func() {
  console.log(num); // pembolehubah num kelihatan di dalam fungsi
}

func(); // akan output 1

Sebenarnya, pembolehubah itu harus ditakrifkan bukan sebelum takrifan fungsi, tetapi sebelum ia dipanggil:

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

let num = 1; // pembolehubah di luar fungsi
func();      // akan output 1

Jika menukar nilai pembolehubah dan selepas itu setiap kali memanggil fungsi - console.log setiap kali akan mengeluarkan hasil yang berbeza:

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

let num; // isytihar pembolehubah

num = 1; // tetapkan nilai 1
func();  // akan output 1

num = 2; // tetapkan nilai 2
func();  // akan output 2

Jika kita mempunyai beberapa fungsi, maka pembolehubah global akan boleh diakses dalam setiap fungsi tersebut:

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

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

let num = 1;

func1(); // akan output 1
func2(); // akan output 1

Jika dalam salah satu fungsi berlaku perubahan pada pembolehubah global, maka pembolehubah itu akan berubah dalam semua fungsi yang menggunakan pembolehubah tersebut:

javascriptfunction func1() {
  console.log(num);
  num++; // ubah pembolehubah global
}

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

let num = 1;

func1(); // akan output 1
func2(); // akan output 2

Oleh kerana mana-mana fungsi boleh dengan mudah menukar pembolehubah global, penggunaannya merupakan tempat pembiakan untuk ralat yang sukar dikesan. Atas sebab ini, penggunaan pembolehubah global dalam skrip perlu diminimumkan. Adalah wajar jika ia langsung tiada atau jumlahnya sangat minimum.

Задание 1

Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:

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

let num;

num = 1;
func();

num = 2;
func();