差異性

Node.js 是由 JavaScript 開發的框架,所以它本身也有全域的概念,但和一般瀏覽器使用的名稱有點不同:

  • window:在瀏覽器下的全域名稱
  • global:在 Node.js 下的全域名稱

 

繼承性

當使用瀏覽器去執行一個 HTML 頁面時,頁面中包含的多支 JS 檔案其全域變數是可以通用的,同時都會 window 物件給繼承,但對 Node.js 來說不是如此,Node.js 設計出來的應用程式中的 JS 檔案無法共用全域變數,它們分工合作,各自執行負責的部份,是一種模組化的概念,除非特地將變數指定給 global,否則不會去汙染到全域環境。

//在全域環境設定變數 a 為 1
var a = 1;

//對瀏覽器來說,a 就是屬於 window 的變數,執行會得到結果
console.log(window.a);

//對 Node.js 來說則不屬於全域變數
console.log(global.a);

//需要特別將變數指定給全域環境才行,用 var 無法加到全域
global.a = 1;
console.log(global);

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料