REPL
wiki
:node
「讀取-求值-輸出」循環(英語:Read-Eval-Print Loop,簡稱REPL)是一個簡單的,交互式的編程環境。web
node.js
官方文檔(v0.12.2)
:編程
REPL
既能夠做爲獨立單機程序,也能夠被其餘的程序包含在內的程序。數組它提供了一種交互方式,即「執行程序,展示結果」。瀏覽器
它能夠被用做
debugging
,testing
或者只是執行操做獲得一些結果。session
REPL
打開命令行,鍵入node
函數
$ node >
而後就能夠當開發環境使了oop
> var age = 12 undefined > age 12 > function getAge(){ ... console.log(this.age) ... } undefined > getAge() 12 undefined
由於REPL
環境內部使用eval
函數來評估該表達式的執行結果,因此有些東西咱們能夠直接這樣寫,如對象:this
> {a:1,b:2} { a: 1, b: 2 } > [1,2,3,4,5] [ 1, 2, 3, 4, 5 ]
_
使用_
能夠指代上一次的操做執行後的值,好比lua
對象:
> {a:1,b:2,c:3} { a: 1, b: 2, c: 3 } > for(var key in _){ ..... console.log('key : ' + key + ',value : ' + _[key]); ..... } key : a,value : 1 key : b,value : 2 key : c,value : 3 //這裏的_指代的是上一次執行操做後的對象
數組:
> [1,2,3,4,5] [ 1, 2, 3, 4, 5 ] > Object.keys(_) //這裏的_指代的時上一次執行的數組 [ '0', '1', '2', '3', '4' ] //獲取index值 注意 下面的值不是咱們的預期,由於_指代的已經不是原先的數組了! > _.map(function(k){return _[k]*_[k]}) [ 0, 1, 4, 9, 16 ] //獲取元素值
正確的結果:
> [1,2,3,4,5] [ 1, 2, 3, 4, 5 ] //數組 > Object.keys(_).map(function(k){return _[k]*_[k]}) [ 1, 4, 9, 16, 25 ] //元素值
REPL
方法一些REPL
裏的方法,經過鍵入.help
能夠看到:
> .help break Sometimes you get stuck, this gets you out clear Alias for .break exit Exit the repl help Show repl options load Load JS from a file into the REPL session save Save all evaluated commands in this REPL session to a file
.break
& .clear
做用:中斷當前的出入
你想退出你當前的輸入環境,使用.break
或者 .clear
> function show(){ ... console.log(''); ... .clear //.clear 或 .break >
.exit
做用:退出REPL
;快捷鍵:
control + c
直接退出REPL
,回到命令行。
.save
將當前REPL
中全部會話保存到文件中
> function sum(a,b){ ... return a + b; ... } undefined > function substract(a,b){ ... return a - b; ... } undefined > .save calculator.js Session saved to:calculator.js
.load
加載文件進入到當前的REPL
會話。
> .load calculator.js > function sum(a,b){ ... return a + b; ... } undefined > function substract(a,b){ ... return a - b; ... } undefined > sum(3,5) 8 > substract(8,2) 6
一門語言在運行的時候,須要一個環境,叫作宿主環境。對於
JavaScript
,宿主環境最多見的是web
瀏覽器。
因此這時的this
一般指代的時window
。
而在node
的REPL
中,this
指代的是global
> this { DTRACE_NET_SERVER_CONNECTION: [Function], DTRACE_NET_STREAM_END: [Function], ... > this === global true
REPL
的優點在於:
- 能夠debugging
- 作一些testing
- 快速的實踐執行操做
done.