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將打印出你可以訪問該類的所有屬性和方法:
探索全局對象
你可以通過輸入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
,多行模式將停止,該語句將不被執行。