1. Apa Itu Scope?
Scope (lingkup) adalah konteks di mana variabel dan fungsi "hidup" dan bisa diakses. Setiap kali Anda mendeklarasikan variabel, variabel tersebut hanya bisa diakses dari area tertentu dalam kode — area inilah yang disebut scope. Pemahaman scope adalah kunci untuk menghindari bug, menulis kode yang bersih, dan memahami konsep lanjutan seperti closure.
Di JavaScript, ada tiga jenis scope utama: Global Scope, Function Scope, dan Block Scope. Masing-masing memiliki aturan tersendiri tentang kapan dan di mana sebuah variabel bisa diakses. Selain itu, JavaScript memiliki konsep Lexical Environment yang menentukan bagaimana scope nested saling berhubungan melalui scope chain.
Tiga Jenis Scope
| Scope | Dibuat Oleh | Akses | Kata Kunci |
|---|---|---|---|
| Global Scope | Kode di luar fungsi/blok | Diakses dari mana saja | var, let, const |
| Function Scope | Fungsi | Hanya di dalam fungsi | var, let, const |
| Block Scope | {} (if, for, dll) | Hanya di dalam blok | let, const saja |
2. Global Scope
Global scope adalah scope terluar — semua variabel yang dideklarasi di luar fungsi atau blok kode manapun berada di global scope. Variabel global bisa diakses dari mana saja dalam program, termasuk dari dalam fungsi dan blok. Di browser, global scope diwakili oleh object window; di Node.js oleh global atau globalThis.
flowchart TD
N0["buatSalam("'Halo'") dieksekusi:"]
N1["return function(nama) return `$(salam), $(nama)!`"]
N2["Lexical Environment salam: 'Halo' outer: global"]
N0 --> N2
N2 --> N1