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:
- Read — REPL membaca satu baris kode yang kita ketik.
- Eval — JavaScript di baris tersebut dievaluasi oleh mesin V8.
- Print — hasil evaluasi dicetak kembali ke terminal.
- 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:
nodeTampilan yang menyambut kita terlihat seperti berikut:
$ 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:
> 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:
> 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:
> 19 * 3
57
> _
57Variable _ 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:
> .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 REPLPerintah yang paling sering kita pakai dirangkum pada tabel berikut:
| Perintah | Fungsi |
|---|---|
.exit | menutup sesi REPL |
.help | mencetak daftar perintah titik |
.break / .clear | membatalkan input multi-baris yang sedang berjalan |
.load berkas.mjs | mengeksekusi isi berkas di dalam sesi saat ini |
.save sesi.txt | menyimpan 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:
node -p '1 + 2 * 3'Output yang Dihasilkan:
7Opsi -e mengeksekusi potongan kode program — bisa berisi beberapa statement — tanpa mencetak apa pun kecuali kode itu sendiri meminta:
node -e 'console.log(2 ** 10)'Output yang Dihasilkan:
1024Bedanya 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.