Menulis program tidak selalu dimulai dari berkas — banyak ide paling cepat diuji lewat percakapan langsung dengan interpreter. Node.js menyediakan mode interaktif bernama REPL untuk kebutuhan itu: kita mengetik satu baris kode, Node.js langsung mengeksekusinya dan menampilkan hasilnya di baris berikutnya. Chapter ini mengajak kita masuk ke REPL, membaca tampilannya, memakai variable istimewa _, mengenal perintah titik, lalu menutup dengan cara mengeksekusi kode singkat tanpa membuka sesi interaktif sama sekali.

Apa itu REPL #

REPL adalah singkatan dari empat tahap yang berulang tanpa henti selama sesi berlangsung:

  1. Read — REPL membaca satu baris kode yang kita ketik.
  2. Eval — JavaScript di baris tersebut dievaluasi oleh mesin V8.
  3. Print — hasil evaluasi dicetak kembali ke terminal.
  4. Loop — REPL kembali menunggu baris berikutnya.

Siklus ini membuat REPL cocok untuk tiga pekerjaan: menguji perilaku sebuah expression tanpa membuat berkas, memeriksa isi object dan function bawaan Node.js, serta berlatih sintaks JavaScript secara langsung. Dokumentasi lengkap mode ini tersedia di halaman API REPL Node.js .

Memulai dan Mengakhiri Sesi #

Sesi REPL dibuka dengan mengetik node tanpa argumen apa pun, lalu menekan Enter:

bash
node

Tampilan yang menyambut kita terlihat seperti berikut:

text
$ node
Welcome to Node.js v24.21.0.
Type ".help" for more information.
> 

Dua baris pertama adalah banner yang melaporkan versi runtime, sedangkan tanda > adalah prompt — posisi kursor yang menandakan REPL siap menerima kode. Untuk mengakhiri sesi, ketik perintah .exit atau tekan Ctrl+D. Tekan Ctrl+C bila kita ingin membatalkan expression yang sedang setengah diketik tanpa menutup sesi.

Mengevaluasi Ekspresi dan Kode #

Mari kita isi sesi tersebut dengan beberapa expression JavaScript. Setiap baris yang diawali > adalah kode yang diketik, dan baris tanpa awalan adalah tanggapan REPL:

text
> 1 + 1
2
> "Budi".toUpperCase()
'BUDI'
> [1, 2, 3]
[ 1, 2, 3 ]
> { nama: "Budi" }
{ nama: 'Budi' }

Ada dua perilaku yang perlu dicermati dari transkrip di atas. Pertama, hasil string ditampilkan dengan tanda kutip satu ('BUDI') — REPL memakai format inspeksi nilai, bukan cetakan console.log, sehingga kita bisa membedakan string dari tipe lain secara cepat. Kedua, expression yang tidak menghasilkan nilai tetap mendapat tanggapan: deklarasi seperti const akan dijawab undefined karena nilai balikannya memang kosong.

REPL juga sabar menunggu kode yang belum selesai. Ketika kita menekan Enter di tengah expression berkurung, prompt berubah menjadi | sebagai tanda bahwa REPL masih menunggu sisa kode:

text
> const a = [
|   1,
|   2
| ];
undefined
> a
[ 1, 2 ]

Baris | 1, dan | 2 menandakan bahwa kurung siku belum ditutup, jadi REPL tidak mengeksekusi apa pun hingga baris ]; melengkapi expression tersebut. Tanggapan undefined muncul karena deklarasi const tidak menghasilkan nilai; setelahnya, mengetik a menampilkan isi array yang barusan kita buat.

Variabel _ dan Riwayat Nilai Terakhir #

REPL menyimpan satu buah variable istimewa: garis bawah _. Setiap kali sebuah expression selesai dievaluasi, variable _ otomatis terisi nilai hasil evaluasi terakhir tersebut:

text
> 19 * 3
57
> _
57

Variable _ menghemat pengetikan saat kita ingin memakai nilai yang baru saja dihitung — misalnya mengubah 57 menjadi string, atau memasukkannya ke dalam perhitungan lanjutan. Selain _, REPL juga mengingat seluruh riwayat perintah yang pernah diketik dalam sesi.

Perintah Titik untuk Mengendalikan Sesi #

Selain kode JavaScript, REPL menerima sekelompok perintah khusus yang diawali titik. Perintah .help mencetak daftarnya secara lengkap:

text
> .help
.break   Sometimes you get stuck, this gets you out
.clear   Alias for .break
.exit    Exit the REPL
.help    Print this help message
.load    Load JS from a file into the REPL session
.save    Save all evaluated commands in this REPL session to a file

Press Ctrl+C to abort current expression, Ctrl+D to exit the REPL

Perintah yang paling sering kita pakai dirangkum pada tabel berikut:

PerintahFungsi
.exitmenutup sesi REPL
.helpmencetak daftar perintah titik
.break / .clearmembatalkan input multi-baris yang sedang berjalan
.load berkas.mjsmengeksekusi isi berkas di dalam sesi saat ini
.save sesi.txtmenyimpan riwayat perintah sesi ke sebuah berkas

Pasangan .load dan .save sangat berguna untuk mengubah sesi eksperimen menjadi berkas kode yang lebih permanen — jembatan alami menuju cara kerja yang kita bahas pada Chapter Menjalankan File JavaScript.

Evaluasi Sekali Jalan tanpa Membuka REPL #

Terkadang kita hanya butuh satu potongan kode sekali jalan, tanpa sesi interaktif yang menunggu. Untuk itu, node menyediakan dua opsi baris perintah. Opsi -p mengevaluasi sebuah expression lalu mencetak hasilnya:

bash
node -p '1 + 2 * 3'

Output yang Dihasilkan:

text
7

Opsi -e mengeksekusi potongan kode program — bisa berisi beberapa statement — tanpa mencetak apa pun kecuali kode itu sendiri meminta:

bash
node -e 'console.log(2 ** 10)'

Output yang Dihasilkan:

text
1024

Bedanya jelas: node -p '1 + 2 * 3' mencetak 7 karena opsi -p bertugas mencetak nilai expression, sedangkan node -e 'console.log(2 ** 10)' mencetak 1024 karena kode yang dieksekusi memang memanggil console.log. Keduanya dijelaskan lengkap di dokumentasi CLI Node.js .

REPL adalah laboratorium yang tepat untuk eksperimen singkat, tetapi program sungguhan — yang berisi puluhan baris dan perlu disimpan — hidup di berkas. Chapter berikutnya mengajarkan format berkas JavaScript, cara menjalankannya dari terminal, dan perbedaan ekstensi .js, .mjs, serta .cjs.