Nama Pembolehubah yang Sama dalam Fungsi JavaScript

Katakan kedua-dua di luar dan di dalam fungsi terdapat pembolehubah num. Dalam kes ini, sebarang perubahan kepada pembolehubah lokal num tidak mempengaruhi pembolehubah global num:

javascriptlet num = 1; // pembolehubah global

function func() {
  let num = 2; // pembolehubah lokal
  console.log(num);
}
func(); // panggil fungsi, akan output 2

console.log(num); // akan output 1 - pembolehubah global tidak berubah

Namun, jika kita lupa mengisytiharkan pembolehubah lokal num menggunakan let, maka di dalam fungsi pembolehubah lokal num tidak akan dicipta, sebaliknya pembolehubah global tersebut akan diubah:

javascriptlet num = 1;

function func() {
  num = 2; // lupa menulis let - mengubah pembolehubah luaran
  console.log(num);
}
func(); // panggil fungsi, akan output 2

console.log(num); // akan output 2 - pembolehubah telah berubah

Terdapat dua situasi di sini: sama ada kita memang ingin mengubah pembolehubah global (maka tiada masalah), atau kita terlupa let dan secara tidak sengaja mengubah pembolehubah global.

Kes kedua merupakan ralat yang sukar dikesan, yang membawa kepada tingkah laku skrip yang tidak dapat diramal. Oleh itu, sentiasa isytiharkan pembolehubah baru anda menggunakan let.

Задание 1

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

javascriptlet num = 1;

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

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

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

javascriptlet num = 1;

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

console.log(num);