Cakupan Variabel JavaScript (dengan Contoh)

Dalam tutorial ini, Anda akan belajar tentang ruang lingkup variabel dalam JavaScript dengan bantuan contoh.

Lingkup mengacu pada ketersediaan variabel dan fungsi di bagian kode tertentu.

Di JavaScript, variabel memiliki dua jenis cakupan:

  1. Lingkup Global
  2. Lingkup Lokal

Lingkup Global

Variabel yang dideklarasikan di bagian atas program atau di luar fungsi dianggap sebagai variabel cakupan global.

Mari kita lihat contoh variabel cakupan global.

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

Dalam program di atas, variabel a dideklarasikan di bagian atas program dan merupakan variabel global. Artinya variabel adapat digunakan di mana saja dalam program.

Nilai variabel 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

Pada program di atas, variabel a adalah variabel global. Nilai a adalah halo. Kemudian variabel a diakses di dalam fungsi dan nilainya berubah menjadi 3.

Karenanya, nilai a berubah setelah mengubahnya di dalam fungsi.

Catatan : Sebaiknya hindari penggunaan variabel global karena nilai variabel global dapat berubah di berbagai area dalam program. Itu dapat memperkenalkan hasil yang tidak diketahui dalam program.

Dalam JavaScript, variabel juga dapat digunakan tanpa mendeklarasikannya. Jika variabel digunakan tanpa mendeklarasikannya, variabel itu secara otomatis menjadi variabel global.

Sebagai contoh,

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

Pada program di atas, variabel a adalah variabel global.

Jika variabel dideklarasikan menggunakan let a = "hello", program akan memberikan error.

Catatan : Dalam JavaScript, ada "strict mode";variabel yang tidak dapat digunakan tanpa mendeklarasikannya. Untuk mempelajari lebih lanjut tentang ketat, kunjungi JavaScript Ketat.

Lingkup Lokal

Variabel juga dapat memiliki cakupan lokal, yaitu hanya dapat diakses di dalam suatu fungsi.

Contoh 1: Variabel Cakupan Lokal

 // 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

Keluaran

 helloWorld Uncaught ReferenceError: b tidak ditentukan

Pada program di atas, variabel a adalah variabel global dan variabel b adalah variabel lokal. Variabel b hanya dapat diakses di dalam fungsi greet. Oleh karena itu, ketika kita mencoba mengakses variabel b di luar fungsi, terjadi kesalahan.

biarkan adalah Block Scoped

Kata letkunci memiliki cakupan blok (variabel hanya dapat diakses di blok langsung).

Contoh 2: Variabel dengan cakupan 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();

Keluaran

 Hello World Hello World hello Uncaught ReferenceError: x tidak ditentukan

Dalam program di atas, variabel

  • a adalah variabel global. Itu dapat diakses di mana saja di program.
  • b adalah variabel lokal. Itu hanya dapat diakses di dalam fungsi greet.
  • c adalah variabel dengan cakupan blok. Itu hanya dapat diakses di dalam ifblok pernyataan.

Karenanya, dalam program di atas, dua yang pertama console.log()bekerja tanpa masalah.

Namun, kami mencoba mengakses variabel bercakupan blok c di luar blok pada yang ketiga console.log(). Ini akan menimbulkan kesalahan.

Catatan : Dalam JavaScript, varmemiliki cakupan fungsi dan cakupan letblok. Jika Anda mencoba untuk menggunakan var c = 'hello';dalam ifpernyataan dalam program di atas, karya-karya seluruh program, seperti c diperlakukan sebagai variabel lokal.

Untuk mempelajari lebih lanjut tentang letversus var, kunjungi JavaScript let vs var.

Artikel yang menarik...