node.js第七課(全局對象和全局變量)



概念:所有屬性都可以在程序的任何地方訪問,即全局變量。在JavaScript中,通常window是全局對象,而Node.js的全局對象是global,
所有全局變量都是global對象的屬性,如:console、process等。
一、全局對象與全局變量
global最根本的作用是作為全局變量的宿主。滿足以下條件成為全局變量:
1.在最外層定義的變量
2.全局對象的屬性
3.隱式定義的變量(未定義直接賦值的變量)
在Node.js中不可能在最外層定義變量,因為所有用戶代碼都是屬於當前模塊的,而模塊本身不是最外層上下文。
二、process
它用於描述當前Node.js進程狀態的對象。提供瞭一個與操作系統的簡單接口,通常寫本地命令行程序的時候,會用到它。
1.process.argv是命令行參數數組,第一個元素是node,第二個元素是腳本文件名,第三個元素開始每個元素是一個運行參數。
2.process.stdout是標準輸出流,通常我們使用的console.log() 其底層是用 process.stdout.write();實現。

//process.stdout.write(“octopus”);
3.process.stdin是標準輸入流,初始時它是被暫停的。要想從標準輸入流讀取數據,必須恢復流,並手動編寫流的事件相應函數。

//恢復流

process.stdin.resume();

process.stdin.on(‘data’,function(data){

process.stdout.write(“read from console “+data.toString());

});
4.process.nextTick(callback)的功能是為事件循環設置一項任務。Node.js會在下次事件循環調響應時調用callback
Node.js適合IO密集型的應用,而不是計算密集型的應用。process.nextTick()提供瞭一個這樣工具,可以把復雜的工作拆散,

變成一個個較小的事件。

function doSomething(args,callback){
somethingComplited(args);
callback();
}
doSomething(‘12345’,function onEnd(){
compute();
})
如果假設compute()和somethingComplited()是兩個較為耗時的函數。以上的程序在調用doSomething時會先執行somethingComplited(args),然後立即調用回調函數,
在onEnd()中又會執行compute(),改寫為:

function doSomething(args,callback){
somethingComplited(args);
process.nextTick(callback);
}
使用process.nextTick()後,改寫後的程序會把上面耗時的操作拆分為兩個事件,減少每個事件的執行時間,提高事件相應速度。

5.process其他方法:process.platform()、process.pid()、process.execPath()、process.memoryUsage()等方法。。。
API鏈接:https://nodejs.org/api/process.html

三、console
java中的log4j的 Logger logger=LoggerManager.getLogger(*.class.getName());
logger.info
logger.warn
logger.error logger.fatal
FATAL:用在極端的情形中,即必須馬上獲得註意的情況。這個程度的錯誤通常需要觸發運維工程師的尋呼機。

ERROR:顯示一個錯誤,或一個通用的錯誤情況,但還不至於會將系統掛起。這種程度的錯誤一般會觸發郵件的發送,

將消息發送到alert list中,運維人員可以在文檔中記錄這個bug並提交。

WARN:不一定是一個bug,但是有人可能會想要知道這一情況。如果有人在讀log文件,他們通常會希望讀到系統出現的任何警告。

INFO:用於基本的、高層次的診斷信息。在長時間運行的代碼段開始運行及結束運行時應該產生消息,以便知道現在系統在幹什麼。

但是這樣的信息不宜太過頻繁。

DEBUG:用於協助低層次的調試。

console用於提供控制臺標準輸出,Node.js沿用瞭這個標準,提供與習慣行為一直的console對象。
1.console.log().向標準輸出流打印字符並以換行符結束。
使用案例:
console.log(“hello”);
console.log(“hello%octopus”);
console.log(“hello%octopus”,” Mr. “);
2.console.error();用法與console.log()相同,隻是向標準錯誤流輸出。
3.console. trace();向標準錯誤流輸出當前的調用棧

發佈留言