Nama Variabel yang Sama dalam Fungsi di JavaScript

Misalkan baik di luar fungsi maupun di dalamnya terdapat variabel num. Dalam kasus ini, perubahan apa pun pada variabel lokal num tidak akan mempengaruhi variabel global num:

javascriptlet num = 1; // variabel global

function func() {
  let num = 2; // variabel lokal
  console.log(num);
}
func(); // memanggil fungsi, akan menampilkan 2

console.log(num); // akan menampilkan 1 - variabel global tidak berubah

Namun, jika kita lupa mendeklarasikan variabel lokal num dengan let, maka di dalam fungsi tidak akan terbuat variabel lokal num, melainkan hanya variabel global yang akan diubah:

javascriptlet num = 1;

function func() {
  num = 2; // lupa menulis let - mengubah variabel eksternal
  console.log(num);
}
func(); // memanggil fungsi, akan menampilkan 2

console.log(num); // akan menampilkan 2 - variabel telah berubah

Di sini bisa ada dua situasi: entah kita benar-benar ingin mengubah variabel global (maka tidak masalah), atau kita lupa let dan secara tidak sengaja mengubah variabel global.

Kasus kedua adalah kesalahan yang sulit dilacak, yang mengarah pada perilaku skrip yang tidak terduga. Oleh karena itu, selalu deklarasikan variabel baru Anda dengan let.

Задание 1

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

javascriptlet num = 1;

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

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

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

javascriptlet num = 1;

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

console.log(num);