Node.js 全域對象

來源:互聯網
上載者:User

標籤:圖片   function   mod   常用   賦值   參數   local   取資料   rss   

Node.js 全域對象

在瀏覽器 JavaScript 中,通常 window 是全域對象, 而 Node.js 中的全域對象是 global,所有全域變數(除了 global 本身以外)都是 global 對象的屬性。

在 Node.js 我們可以直接存取到 global 的屬性,而不需要在應用中包含它。

全域對象與全域變數

global 最根本的作用是作為全域變數的宿主。按照 ECMAScript 的定義,滿足以下條 件的變數是全域變數:

  • 在最外層定義的變數;
  • 全域對象的屬性;
  • 隱式定義的變數(未定義直接賦值的變數)。

當你定義一個全域變數時,這個變數同時也會成為全域對象的屬性,反之亦然。需要注 意的是,在 Node.js 中你不可能在最外層定義變數,因為所有使用者代碼都是屬於當前模組的, 而模組本身不是最外層上下文。

注意: 永遠使用 var 定義變數以避免引入全域變數,因為全域變數會汙染 命名空間,提高代碼的耦合風險。

__filename

__filename 表示當前正在執行的指令碼的檔案名稱。它將輸出檔案所在位置的絕對路徑,且和命令列參數所指定的檔案名稱不一定相同。 如果在模組中,返回的值是模組檔案的路徑。

 

執行個體

建立檔案 main.js ,代碼如下所示:

// 輸出全域變數 __filename 的值console.log( __filename );

  

執行 main.js 檔案,代碼如下所示:

$ node main.js/web/com/runoob/nodejs/main.js
__dirname

__dirname 表示當前執行指令碼所在的目錄。

執行個體

建立檔案 main.js ,代碼如下所示:

// 輸出全域變數 __dirname 的值console.log( __dirname );

  

執行 main.js 檔案,代碼如下所示:

$ node main.js/web/com/runoob/nodejs
setTimeout(cb, ms)

setTimeout(cb, ms) 全域函數在指定的毫秒(ms)數後執行指定函數(cb)。:setTimeout() 只執行一次指定函數。

返回一個代表定時器的控制代碼值。

執行個體

建立檔案 main.js ,代碼如下所示:

function printHello(){   console.log( "Hello, World!");}// 兩秒後執行以上函數setTimeout(printHello, 2000);

  

執行 main.js 檔案,代碼如下所示:

$ node main.jsHello, World!
clearTimeout(t)

clearTimeout( t ) 全域函數用於停止一個之前通過 setTimeout() 建立的定時器。 參數 t 是通過 setTimeout() 函數建立的定時器。

執行個體

建立檔案 main.js ,代碼如下所示:

function printHello(){   console.log( "Hello, World!");}// 兩秒後執行以上函數var t = setTimeout(printHello, 2000);// 清除定時器clearTimeout(t);

  

執行 main.js 檔案,代碼如下所示:

$ node main.js
setInterval(cb, ms)

setInterval(cb, ms) 全域函數在指定的毫秒(ms)數後執行指定函數(cb)。

返回一個代表定時器的控制代碼值。可以使用 clearInterval(t) 函數來清除定時器。

setInterval() 方法會不停地調用函數,直到 clearInterval() 被調用或視窗被關閉。

執行個體

建立檔案 main.js ,代碼如下所示:

function printHello(){   console.log( "Hello, World!");}// 兩秒後執行以上函數setInterval(printHello, 2000);

  

執行 main.js 檔案,代碼如下所示:

$ node main.js

Hello, World! Hello, World! Hello, World! Hello, World! Hello, World! ……

以上程式每隔兩秒就會輸出一次"Hello, World!",且會永久執行下去,直到你按下 ctrl + c 按鈕。

console

console 用於提供控制台標準輸出,它是由 Internet Explorer 的 JScript 引擎提供的調試工具,後來逐漸成為瀏覽器的實施標準。

Node.js 沿用了這個標準,提供與習慣行為一致的 console 對象,用於向標準輸出資料流(stdout)或標準錯誤流(stderr)輸出字元。

console 方法

以下為 console 對象的方法:

 

console.log():向標準輸出資料流列印字元並以分行符號結束。

console.log 接收若干 個參數,如果只有一個參數,則輸出這個參數的字串形式。如果有多個參數,則 以類似於C 語言 printf() 命令的格式輸出。

第一個參數是一個字串,如果沒有 參數,只列印一個換行。

console.log(‘Hello world‘); console.log(‘byvoid%diovyb‘); console.log(‘byvoid%diovyb‘, 1991);

  

運行結果為:

Hello world byvoid%diovyb byvoid1991iovyb 
  • console.error():與console.log() 用法相同,只是向標準錯誤流輸出。
  • console.trace():向標準錯誤流輸出當前的調用棧。
console.trace();

運行結果為:

Trace: at Object.<anonymous> (/home/byvoid/consoletrace.js:1:71) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) at Function._load (module.js:308:12) at Array.0 (module.js:479:10) at EventEmitter._tickCallback (node.js:192:40)

  

執行個體

建立檔案 main.js ,代碼如下所示:

console.info("程式開始執行:");var counter = 10;console.log("計數: %d", counter);console.time("擷取資料");//// 執行一些代碼// console.timeEnd(‘擷取資料‘);console.info("程式執行完畢。")

  

執行 main.js 檔案,代碼如下所示:

$ node main.js程式開始執行:計數: 10擷取資料: 0ms程式執行完畢

process

process 是一個全域變數,即 global 對象的屬性。

它用於描述當前Node.js 進程狀態的對象,提供了一個與作業系統的簡單介面。通常在你寫本地命令列程式的時候,少不了要 和它打交道。下面將會介紹 process 對象的一些最常用的成員方法。

執行個體

建立檔案 main.js ,代碼如下所示:

process.on(‘exit‘, function(code) {  // 以下代碼永遠不會執行  setTimeout(function() {    console.log("該代碼不會執行");  }, 0);    console.log(‘退出碼為:‘, code);});console.log("程式執行結束");

  

執行 main.js 檔案,代碼如下所示:

$ node main.js程式執行結束退出碼為: 0
 
Process 屬性

Process 提供了很多有用的屬性,便於我們更好的控制系統的互動:

 

執行個體

建立檔案 main.js ,代碼如下所示:

// 輸出到終端process.stdout.write("Hello World!" + "\n");// 通過參數讀取process.argv.forEach(function(val, index, array) {   console.log(index + ‘: ‘ + val);});// 擷取執行路徑console.log(process.execPath);// 平台資訊console.log(process.platform);

  

執行 main.js 檔案,代碼如下所示:

$ node main.jsHello World!0: node1: /web/www/node/main.js/usr/local/node/0.10.36/bin/nodedarwin

  

 
執行個體

建立檔案 main.js ,代碼如下所示:

// 輸出目前的目錄console.log(‘目前的目錄: ‘ + process.cwd());// 輸出目前的版本console.log(‘目前的版本: ‘ + process.version);// 輸出記憶體使用量情況console.log(process.memoryUsage());

  

執行 main.js 檔案,代碼如下所示:

$ node main.js目前的目錄: /web/com/runoob/nodejs目前的版本: v0.10.36{ rss: 12541952, heapTotal: 4083456, heapUsed: 2157056 }

  

摘自:http://www.runoob.com/nodejs/nodejs-global-object.html

 

Node.js 全域對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.