Setelah memahami apa itu variabel, kini kita akan membahas dua jenis variabel di Scratch: global variable dan local variable. Keduanya menentukan sprite mana saja yang bisa mengakses dan mengubah nilai suatu variabel.
Global variable adalah variabel yang nilainya bisa dibaca maupun diubah oleh sprite mana pun dalam project — tidak peduli sprite mana yang awalnya membuat variabel tersebut. Contoh: jika sprite “Cat” membuat variabel bernama Score, maka sprite lain seperti “Lion” tetap bisa membaca dan mengubah nilai variabel Score tersebut, meskipun bukan yang membuatnya.
Local variable adalah variabel yang nilainya hanya bisa diubah oleh sprite yang membuatnya. Sprite lain tetap bisa membaca nilainya, tapi tidak bisa mengubahnya. Contoh: jika sprite “Lion” membuat variabel lokal bernama Name, maka hanya Lion yang bisa mengubah nilai variabel tersebut; sprite “Cat” hanya bisa membacanya, tidak bisa mengubahnya.
Saat membuat variabel baru lewat tombol Make a Variable, akan muncul jendela dengan dua pilihan cakupan (scope) di bagian bawah:
Misalnya kita punya dua sprite, Sam dan Ben. Buat variabel baru dengan opsi For all sprites, beri nama Score. Variabel ini akan otomatis muncul dan bisa digunakan oleh kedua sprite, meskipun dibuat lewat sprite Sam.
Skrip pada sprite Sam:
when [green flag] clicked
set [Score] to "2 - 3"
say (Score)
Skrip pada sprite Ben:
when [green flag] clicked
set [Score] to "4 - 3"
say (Score)
Karena Score adalah variabel global, masing-masing sprite bisa mengatur nilainya sendiri-sendiri secara independen — Sam akan menampilkan “2 – 3” sementara Ben menampilkan “4 – 3”, meskipun keduanya menggunakan variabel dengan nama yang sama.
Sambil berada di sprite Sam, buat variabel baru dengan opsi For this sprite only, beri nama Team. Variabel ini hanya akan muncul pada sprite Sam saja — jika kita berpindah ke sprite Ben, variabel Team tidak akan terlihat di daftar variabel milik Ben (karena bersifat lokal, khusus milik Sam).
Skrip pada sprite Sam:
when [green flag] clicked
set [Team] to "Real Madrid"
say (Team)
Karena Ben tidak memiliki akses langsung ke variabel lokal milik Sam, Ben tidak bisa menggunakan blok set untuk mengubahnya. Namun, Ben tetap bisa membaca nilainya melalui kategori Sensing, menggunakan blok pelaporan variabel milik sprite lain (pilih sprite “Sam” pada dropdown-nya):
when [green flag] clicked
say (Sam's Team)
Saat pertama dijalankan sebelum Sam mengatur nilainya, Ben akan menampilkan 0 (nilai default), sementara Sam sudah menampilkan “Real Madrid”. Namun setelah skrip Sam sempat berjalan dan mengatur nilai Team, Ben yang membaca ulang nilai tersebut akan ikut menampilkan “Real Madrid” — karena Ben hanya bisa membaca, bukan mengubah nilai variabel lokal milik Sam.
| Aspek | Global Variable | Local Variable |
|---|---|---|
| Dibuat dengan opsi | For all sprites | For this sprite only |
| Bisa dibaca oleh | Semua sprite | Semua sprite |
| Bisa diubah oleh | Semua sprite | Hanya sprite pembuatnya |