REPL代表Read-Evaluate-Print-Loop,這是一個快速探索Node功能的好方法。

我們使用node命令來運行Node.js腳本:

node script.js

如果省略文件名,則使用REPL模式:

node

如果你現在在終端中嘗試這樣做,會得到以下結果:

❯ node
>

命令進入閒置模式,等待我們輸入內容。

提示:如果你不確定如何打開終端,請搜索“如何在…上打開終端”。

REPL等待我們輸入一些JavaScript代碼。

先從簡單的開始,輸入以下內容:

> console.log('test')
test
undefined
>

第一個值test是我們要求控制台打印的輸出,然後得到的是undefined,這是運行console.log()的返回值。

現在我們可以輸入新的JavaScript代碼。

使用Tab鍵來自動補全

REPL的一個很酷的功能是它的互動性。

在編寫代碼時,如果按下Tab鍵,REPL會嘗試自動補全你已經定義的變量或預定義的變量。

探索JavaScript對象

嘗試輸入JavaScript類的名稱,例如Number,然後加上一個點並按下Tab鍵。

REPL將打印出你可以訪問該類的所有屬性和方法:

按下Tab鍵顯示對象的屬性

探索全局對象

你可以通過輸入global.並按下Tab鍵來檢查你可以訪問的全局對象:

全局對象

特殊變量 _

如果在某些代碼之後輸入_,它將打印出上一個操作的結果。

點命令

REPL有一些特殊命令,都以點.開頭。它們包括:

  • .help:顯示點命令的幫助信息
  • .editor:啟用編輯器模式,便於編寫多行JavaScript代碼。進入此模式後,輸入Ctrl-D運行編寫的代碼。
  • .break:在輸入多行表達式時,輸入.break命令將中止進一步的輸入,相當於按下Ctrl-C。
  • .clear:重置REPL上下文為空對象,並清除當前正在輸入的多行表達式。
  • .load:加載一個JavaScript文件,相對於當前工作目錄
  • .save:將REPL會話中的所有內容保存到文件中(指定文件名)
  • .exit:退出REPL(相當於按兩次Ctrl-C)

REPL知道何時你正在輸入多行語句,而不需要調用.editor命令。

例如,如果你開始輸入迭代器,像這樣:

[1, 2, 3].forEach(num => {

然後按下enter鍵,REPL將移到一個以3個句點開頭的新行,表示你現在可以繼續編寫該塊的代碼。

... console.log(num)
... })

如果你在一行的末尾輸入.break,多行模式將停止,該語句將不被執行。