Variabel Global dalam Fungsi di JavaScript

Di JavaScript (di bahasa lain biasanya tidak seperti ini) variabel yang didefinisikan di luar fungsi, akan terlihat di dalam fungsi tersebut. Variabel seperti ini disebut global. Mari kita lihat contohnya:

javascriptlet num = 1; // variabel di luar fungsi

function func() {
  console.log(num); // variabel num terlihat di dalam fungsi
}

func(); // menampilkan 1

Sebenarnya variabel harus didefinisikan bukan sebelum pendefinisian fungsi, tetapi sebelum pemanggilannya:

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

let num = 1; // variabel di luar fungsi
func();      // menampilkan 1

Jika kita mengubah nilai variabel dan setelah itu setiap kali memanggil fungsi - console.log setiap kali akan menampilkan hasil yang berbeda:

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

let num; // deklarasikan variabel

num = 1; // atur nilai menjadi 1
func();  // menampilkan 1

num = 2; // atur nilai menjadi 2
func();  // menampilkan 2

Jika kita memiliki beberapa fungsi, maka variabel global akan dapat diakses di setiap fungsi tersebut:

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

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

let num = 1;

func1(); // menampilkan 1
func2(); // menampilkan 1

Jika di salah satu fungsi terjadi perubahan pada variabel global, maka variabel tersebut akan berubah di semua fungsi yang menggunakan variabel itu:

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

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

let num = 1;

func1(); // menampilkan 1
func2(); // menampilkan 2

Karena salah satu fungsi dapat dengan mudah mengubah variabel global, maka penggunaannya merupakan sarang bagi bug yang sulit dilacak. Oleh karena itu, penggunaan variabel global dalam skrip harus diminimalisir. Diinginkan agar tidak ada sama sekali atau jumlahnya sangat minimal.

Задание 1

Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:

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

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

Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:

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

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

Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:

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

let num;

num = 1;
func();

num = 2;
func();