1. 程式人生 > 程式設計 >nodejs與瀏覽器中全域性物件區別點總結

nodejs與瀏覽器中全域性物件區別點總結

Node.中,一個.js檔案就是一個完整的作用域(module,模組)。因此 var 宣告的變數只在當前.js檔案中有效,而不是全域性有效。 而global全域性物件是獨立於所有的.js(module,模組)之上的。

而在瀏覽器中的最頂層全域性物件是window,var宣告的變數預設繫結到window物件上

1. 全域性物件的定義

概念:在程式的任何地方都可以訪問的物件,稱之為全域性物件。物件的屬性稱為全域性變數。

2. NodeJS中的全域性變數總結

這裡我們總結下在nodejs中,我們常用的全域性變數有哪些

2.1 Buffer類

Buffer,我們也可以稱為“緩衝區”,其功能就是在記憶體中開闢一片區域,用來存放二進位制資料。

2.2 __dirname

__dirname,返回當前模組檔案解析過後所在的資料夾(目錄)的絕對路徑。

請記住,__dirname並不是真正的全域性變數。

2.3 __filename

__filename,返回當前模組檔案被解析過後的絕對路徑。

請記住,__filename並不是真正的全域性變數。

2.4 module

請記住,module並不是真正的全域性變數。

2.5 require()

請記住,require()並不是真正的全域性變數。

2.6 exports

請記住,exports並不是真正的全域性變數。

2.7 setImmediate和clearImmediate

2.8 setTimeout和clearTimeout

2.9 setInterval 和 clearInterval

2.10 console

用於列印到標準輸出和標準錯誤

2.11 process

process 物件提供有關當前 Node.js 程序的資訊並對其進行控制。

2.12 URL

URL 用於網址處理和解析的實用工具

2.13 events

events模組是Node對“釋出/訂閱”模式(publish/subscribe)的實現。一個物件通過這個模組,向另一個物件傳遞訊息。該模組通過EventEmitter屬性,提供了一個建構函式。

3. globalThis

3.1 globalThis是什麼?

JS 語言越來越多被用於各種環境中。除了最常見的瀏覽器之外,它還可以在伺服器、智慧手機甚至機器人硬體上執行。

每個環境都有其自己的物件模型,並提供了不同的語法來訪問全域性物件。例如,在 Web 瀏覽器中,可以通過window,self或frames訪問全域性物件。但是,在 Node.js 中,這些屬性不存在,而必須使用global。

globalThis旨在通過定義一個標準的全域性屬性來整合日益分散的訪問http://www.cppcns.com全域性物件的方法。該提案被納入ES2020標準。所有流行的瀏覽器,包括Chrome 71+、Firefox 65+和Safari 12.1+,都已經支援這項功能。你也可以在Node.js 12+中來使用它。

內容擴充套件:

NodeJS - global全域性物件

function global() {
    // 全域性變數。__filename 表示當前正在執行的的檔名。
    console.info('__filename: ' + __filename ); // __filename: D:\\nodejs-test\requestHandlers.js

    // 全域性變數。__dirname 表示當前執行指令碼所在的目錄。
    console.info('__dirname : ' + __dirname  ); // __dirname : D:\github\nodejs-test

    // 全域性函式。setTimeout(cb,ms) 全域性函式在指定的毫秒(ms)數後執行指定函式(cb)。setTimeout() 只執行一次指定函式。返回一個代表定時器的控制代碼值。
    setTimeout(function () {
        console.info('setTimeout: 我只執行一次。');
    },2000);

    // 全域性函式。clearTimeout( t ) 全域性函式用於停止一個之前通過 setTimeout() 建立的定時器。 引數 t 是通過 setTimeout() 函式建立的定時器。
    let t = setTimeout(function () {
        console.info('clearTimeout: 我沒辦法執行了。');
    },2000);
    clearTimeout(t); // 清除定時器

    // 全域性函式。setInterval(cb,ms) 全域性函式在指定的毫秒(ms)數後執行指定函式(cb)。
    let tt = setInterval(function () {
        console.info('setInterval: 我每2秒執行一次。');
    },2000);

    // 全域性函式。setInterval() 方法會不停地呼叫函式,直到 clearInterval() 被呼叫或視窗被關閉。
    setTimeout(function () {
        clearInterval(tt); // 清除定時器
    },5000);

    // 全域性物件。console
    console.info('console: 我也屬於global。');

    // 全域性變數。global 物件的屬性。process
    console.info('process 當前目錄: ' + process.cwd()); // 輸出當前目錄
    console.info('process 當前版本: ' + process.version); // 輸出當前版本
    console.info('process 平臺資訊: ' + process.platform); // 輸出平臺資訊
}

輸出:

__filename: D:\github\nodejs-test\requestHandlers.js
__dirname : D:\github\nodejs-test
console: 我也屬於global。
processwww.cppcns.com 當前目錄: D:\github\nodejs-test
process 當前版本: v10.15.3
process 平臺資訊: win32
setTimeout: 我只執行一次。
setInterval: 我每2秒執行一次。
setIntwww.cppcns.comerval: 我每2秒執行一次。

到此這篇關於nodejs與瀏覽器中全域性物件區別點總結的文章就介紹到這了,更多相關nodejs中的全域性物件講解內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!