Skop Pembolehubah JavaScript (dengan Contoh)

Dalam tutorial ini, anda akan belajar mengenai skop pemboleh ubah dalam JavaScript dengan bantuan contoh.

Skop merujuk kepada ketersediaan pemboleh ubah dan fungsi di bahagian tertentu kod.

Dalam JavaScript, pemboleh ubah mempunyai dua jenis skop:

  1. Skop Global
  2. Skop Tempatan

Skop Global

Pemboleh ubah yang dinyatakan di bahagian atas program atau di luar fungsi dianggap sebagai pemboleh ubah skop global.

Mari kita lihat contoh pemboleh ubah skop global.

 // program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello

Dalam program di atas, pemboleh ubah a dinyatakan di bahagian atas program dan merupakan pemboleh ubah global. Ini bermaksud pemboleh ubah aboleh digunakan di mana sahaja dalam program.

Nilai pemboleh ubah global dapat diubah di dalam fungsi. Sebagai contoh,

 // program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3

Dalam program di atas, pemboleh ubah a adalah pemboleh ubah global. Nilai a hello. Kemudian pemboleh ubah a diakses di dalam fungsi dan nilainya berubah menjadi 3.

Oleh itu, nilai perubahan setelah mengubahnya di dalam fungsi.

Catatan : Adalah amalan yang baik untuk mengelakkan penggunaan pemboleh ubah global kerana nilai pemboleh ubah global dapat berubah di kawasan yang berbeza dalam program ini. Ia dapat memperkenalkan hasil yang tidak diketahui dalam program ini.

Dalam JavaScript, pemboleh ubah juga dapat digunakan tanpa menyatakannya. Sekiranya pemboleh ubah digunakan tanpa menyatakannya, pemboleh ubah tersebut secara automatik menjadi pemboleh ubah global.

Sebagai contoh,

 function greet() ( a = "hello" ) greet(); console.log(a); // hello

Dalam program di atas, pemboleh ubah a adalah pemboleh ubah global.

Sekiranya pemboleh ubah dinyatakan menggunakan let a = "hello", program akan menimbulkan kesalahan.

Catatan : Dalam JavaScript, terdapat "strict mode";variabel yang tidak dapat digunakan tanpa menyatakannya. Untuk mengetahui lebih lanjut mengenai ketat, lawati JavaScript Ketat.

Skop Tempatan

Pemboleh ubah juga dapat memiliki ruang lingkup lokal, yaitu hanya dapat diakses dalam fungsi.

Contoh 1: Pembolehubah Skop Tempatan

 // program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error

Pengeluaran

 helloWorld Uncaught ReferenceError: b tidak ditentukan

Dalam program di atas, pemboleh ubah a adalah pemboleh ubah global dan pemboleh ubah b adalah pemboleh ubah tempatan. Pemboleh ubah b dapat diakses hanya di dalam fungsi sapaan. Oleh itu, apabila kita cuba mengakses pemboleh ubah b di luar fungsi, ralat berlaku.

let is Block Scoped

Kata letkunci dilindungi blok (pemboleh ubah hanya dapat diakses di blok langsung).

Contoh 2: Pemboleh ubah berskala blok

 // program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();

Pengeluaran

 Hello World Hello World hello Uncaught ReferenceError: x tidak ditentukan

Dalam program di atas, pemboleh ubah

  • a adalah pemboleh ubah global. Ia boleh diakses di mana sahaja dalam program.
  • b adalah pemboleh ubah tempatan. Ia dapat diakses hanya di dalam fungsi greet.
  • c adalah pemboleh ubah blok-skop. Ia boleh diakses hanya di dalam ifblok penyataan.

Oleh itu, dalam program di atas, dua yang pertama console.log()berfungsi tanpa sebarang masalah.

Walau bagaimanapun, kami cuba mengakses pemboleh ubah berskala blok di luar blok pada ketiga console.log(). Ini akan menimbulkan ralat.

Catatan : Dalam JavaScript, varfungsi dilingkupi dan diblokir letblok. Jika anda cuba untuk menggunakan var c = 'hello';di dalam ifkenyataan dalam program di atas, segala kerja program, kerana c dianggap sebagai pembolehubah tempatan.

Untuk mengetahui lebih lanjut mengenai letversus var, kunjungi JavaScript let vs var.

Artikel menarik...