node.js之REPL

何爲REPL

wiki:node

「讀取-求值-輸出」循環(英語:Read-Eval-Print Loop,簡稱REPL)是一個簡單的,交互式的編程環境。web

node.js官方文檔(v0.12.2):編程

REPL既能夠做爲獨立單機程序,也能夠被其餘的程序包含在內的程序。數組

它提供了一種交互方式,即「執行程序,展示結果」。瀏覽器

它能夠被用做debuggingtesting 或者只是執行操做獲得一些結果。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

而在nodeREPL中,this指代的是global

> this
{ DTRACE_NET_SERVER_CONNECTION: [Function],
  DTRACE_NET_STREAM_END: [Function],
...

> this === global
true

REPL的優點在於:
- 能夠debugging
- 作一些testing
- 快速的實踐執行操做

done.
相關文章
相關標籤/搜索