2016年7月4日 星期一

REPL操作、全域變數 (Node.js 2)

安裝完成後,打開命令提示字元,輸入node或者打開安裝路徑的node.exe(預設在C:\Program Files\nodejs),就會出現「>」的提示,裡面可以打javascript語法,如:


※紅框:打完function想離開按一次Ctrl+C會提示再按一次或打「.exit」可以離開或用更猛的Ctrl+D直接跳出
.help可以看到其他的命令,或者看官網的API

※綠框:雖然hello()剛剛可以執行,但因為已經執行 .exit 了,所以記錄都不見了,所以會出錯



離開再進來還想抓到之前的程式碼,可以用.save和.load,如下:
我一load xxx就會幫我將內容打出來,所以就可以很輕鬆的呼叫了
我有看到在「下載」的資料夾裡,出現一個檔案叫xxx,內容就是這個了
在「下載」的資料夾裡,可能是預設下載路徑的關係吧!
所以命令提示字元關掉再打開,當然還是抓的到

※.clear是.break的別名,所以兩個功能一樣
功能就是在打程式的時候,一開始左邊是「>」的符號,但打到「{」按Enter後,會自動出現「...」的提示,之後每打完一行按Enter都會出現,直到打上「}」才表示輸入完畢,符號也會變回「>」
但有時打錯字,但已經按Enter了,沒有辦法回上面改,所以可以下這個指令,讓符號直接變回「>」,而剛剛打的就無效了,所以才會取名叫.break和.clear



將function存成一個檔案

我將檔名取名為helloNodeJS.txt(其實和.save一樣,差別只是誰存而已)
※一般副檔名是js,但我故意用txt,表示它是抓裡面的文字來編譯,甚至沒有副檔名也可以

※最下面的用法是直接用,但因沒辦法呼叫,這個例子不適用,我將內容改成以下的樣子,執行後就可以看到了
const xxx = 1;
if(xxx = 1) {
    console.log('我是1');
} else {
    console.log('我不是1');
}

※做個判斷式,執行結果如下:



全域變數

官網連結

首先用node進入後打上console.log(global);尤於太長了,只列出後面的部分
可以看到有很多「xxx:」,和官網的API一樣,如綠框,所以直接用global點它,可以看到裡面的內容,也可以自己定義,如上圖的xxx,定義完再次執行console.log(global);也能看到自定義的變數,但自定義的重新進入就不見了

※檔名和檔案路徑

__dirname和__filename是一抓檔案時,可以取得檔名和路徑用的,但直接寫是會錯誤的
我新增一個檔案叫test.txt,內容如下:
console.log(__filename);
console.info(__dirname);

※想直接用.load也是不行的,因為.load只是機器幫你打,結果當然一樣


Console.log的變數

console也是其中一個全域變數,因為太常用了,所以有必要了解一下
將helloNodeJS.txt修改成如下:
console.log('string: %s', 'bruce');
console.log('decimal: %d', 100);
console.log('json: %j', {'a':1, 'b':[1,2,3]});
console.log('percent: %');
console.log('percent: %%');
console.log('xxx\r\nooo');

※輸出的結果為:

官方的API就這四種,其中打1或2個%都是1個「%」,打3或4個%都是2個「%」,依此類推

※\r\n可以換行


※Console

console的info是log的別名,標準輸出
console的warn是error的別名,標準錯誤輸出
在命令提示字元看起來一模一樣,顏色也一樣
但是如果是輸出到檔案就會有所不同,如下:
※「>」表示輸出到哪裡;「>>」表示附加到哪裡
如上圖表示輸出到同一層(javaBruce),且新增一個檔案叫111.txt(可以沒有這個檔案),然後將xxx寫進去
還有最後一個指令表示,附加到111.txt的最後面,沒有檔案會新增
所以後面兩個指令,「xxx」才看不到,但ooo永遠都在控制台


※Console.time 和 Console.timeEnd

可以知道一段程式碼執行了多少時間

console.time('xxx');
for (var i = 0; i < 10; i++) {
    console.info('index=' + i);
}
console.timeEnd('xxx');

※不下Console.timeEnd不會印出多少時間

沒有留言:

張貼留言