Node.js——全域性物件
全域性物件
- 在最外層定義的變數
- 全域性物件的屬性(global是全域性變數的宿主)
- 隱式定義的變數(未定義直接賦值的變數)
當定義全域性變數時,這個變數也會成為全域性物件的屬性,在node.js不可能在最外層定義變數。
建議:永遠使用var去定義非全域性變數
__filename
表示當前正在執行的腳步的檔名
__dirname
表示當前執行指令碼所在的目錄
例項:
console.log(__dirname); console.log(__filename);
執行結果:
SetTimeout()
原始碼:function setTimeout(callback, delay, args) {}
第一個引數:回撥函式
第二個引數:延遲時間(單位ms)
Delay毫秒後執行callback函式;
例項:
function say(){
console.log("有些事,只能一個人做。有些關,只能一個人過。有些路啊,只能一個人走。")
}
setTimeout(say,1000);
執行結果:
clearTimeout()
停止setTimeout()建立的定時器
例項:
function say(){
console.log("有些事,只能一個人做。有些關,只能一個人過。有些路啊,只能一個人走。")
}
var t = setTimeout(say,1000);
clearTimeout(t);
執行結果:
Setlnterval()
全域性韓在指定時間後執行函式,會不停地重複呼叫函式,直到clearInterval()被呼叫或視窗被關閉
例項:
function say(){ console.log("有些事,只能一個人做。有些關,只能一個人過。有些路啊,只能一個人走。") } var t = setInterval(say,1000);
執行結果:
Console
控制檯標準輸出
console.log([data][, ...]) |
向標準輸出流列印字元並以換行符結束。 |
console.info([data][, ...]) |
返回資訊性訊息,這個命令與console.log差別並不大,除了在chrome中只會輸出文字外,其餘的會顯示一個藍色的驚歎號。 |
console.error([data][, ...]) |
輸出錯誤訊息的。控制檯在出現錯誤時會顯示是紅色的叉子。 |
console.warn([data][, ...]) |
輸出警告訊息。控制檯出現有黃色的驚歎號。 |
console.dir(obj[, options]) |
用來對一個物件進行檢查(inspect),並以易於閱讀和列印的格式顯示。 |
console.time(label) |
輸出時間,表示計時開始。 |
console.timeEnd(label) |
結束時間,表示計時結束。 |
console.trace(message[, ...]) |
當前執行的程式碼在堆疊中的呼叫路徑,這個測試函式執行很有幫助,只要給想測試的函式裡面加入 console.trace 就行了。 |
console.assert(value[, message][, ...]) |
用於判斷某個表示式或變數是否為真,接收兩個引數,第一個引數是表示式,第二個引數是字串。只有當第一個引數為false,才會輸出第二個引數,否則不會有任何結果。 |
例項:
console.log('hello %s',"word");
console.log('hello %s ','word');
console.log('hello %s');
執行結果:
console.log('hello %s',"word");
console.log('hello %s ','word');
console.trace();
console.log('hello %s');
執行結果:
例項:
console.time("01");
console.log('hello %s',"word");
console.log('hello %s ','word');
console.log('hello %s');
console.timeEnd("01");
執行結果:
Process
全域性變數,即global物件的屬性
1 |
exit |
2 |
beforeExit |
3 |
uncaughtException |
4 |
Signal 事件 |
例項:
process.on('exit',function (code) {
setTimeout(function () {
console.log("執行嗎?",0);
}) ;
console.log("不執行");
console.log("退出碼:",code);
});
console.log("over");
執行結果:
程式結束時,觸發exit事件
其中涉及有關setTimeout的值賦值為0的思考:
不執行的原因:
Javascript在瀏覽器中是單執行緒執行的,必須在完成當前任務後,才能執行佇列中的下一個任務
同時javascript還維護著一個setTimeout佇列,用於儲存未執行的setTimeout任務,只有當普通程式執行完才執行setTimeout佇列中的函式
退出狀態碼
退出狀態碼如下所示:
狀態碼 |
名稱 & 描述 |
1 |
Uncaught Fatal Exception |
2 |
Unused |
3 |
Internal JavaScript Parse Error |
4 |
Internal JavaScript Evaluation Failure |
5 |
Fatal Error |
6 |
Non-function Internal Exception Handler |
7 |
Internal Exception Handler Run-Time Failure |
8 |
Unused |
9 |
Invalid Argument |
10 |
Internal JavaScript Run-Time Failure |
12 |
Invalid Debug Argument |
128 |
Signal Exits |
Process 屬性
Process 提供了很多有用的屬性,便於我們更好的控制系統的互動:
序號. |
屬性 & 描述 |
1 |
stdout |
2 |
stderr |
3 |
stdin |
4 |
argv |
5 |
execPath |
6 |
execArgv |
7 |
env |
8 |
exitCode |
9 |
version |
10 |
versions |
11 |
config |
12 |
pid |
13 |
title |
14 |
arch |
15 |
platform |
16 |
mainModule |