淺談Nodejs中的作用域問題
在JS中有全局作用域和函數(shù)作用域,而在Nodejs中也自己的作用域,分為全局作用域(global)和模塊作用域。
js作用域:
以前學(xué)js的時候我們的全局對象是window,如:
var a = 10; console.log(window.a);
我們定義的全局變量默認(rèn)是給window添加一個屬性或者方法。
function fn(){
var num = 22;
}
console.log(num);
報錯,因為num是在函數(shù)中定義的,在函數(shù)外部是訪問不了函數(shù)內(nèi)部的變量的,雖然可以通過閉包來訪問函數(shù)中的變量,但這不是我要說的重點,這也就是函數(shù)作用域。
好了,今天的重點來了,Nodejs中的作用域是什么樣的?
首先我在文件1.js中定義了一個全局變量,全局變量用global來定義。
global.web = "Nodejs";
然后我通過2.js來引用1.js文件
require('./1.js');
在nodejs中已經(jīng)沒有了html,dom,和bom了,自然也沒有了script標(biāo)簽,在node中如果需要引入一個文件則需要通過require方法來加載這個文件,里面寫對應(yīng)的文件路徑,一般我們寫相對路徑,相對路徑前面需要加./如果是絕對路徑則用/。接下來我們在2.js中訪問一下這個全局變量。
console.log(global.web); //Nodejs
ok,
這比較簡單,一開始我還說了在Nodejs中還有模塊作用域,那模塊作用域又是什么?
說到模塊作用域,不得不提模塊化開發(fā),如果你有過模塊化開發(fā)的經(jīng)驗?zāi)阋欢ㄔ?jīng)為了變量名而頭疼過,因為如果你寫的代碼和你同事寫的代碼不規(guī)范的話,那么在代碼中如果出現(xiàn)相同的變量名,那么后面的變量是會覆蓋之前的變量的,在js中我們可以通過函數(shù)來解決這個問題,而在nodejs中我們除了可以使用函數(shù)的作用域以外,nodejs還規(guī)定了一種模塊作用域,每個文件都是一個模塊,也就是說每個文件都有各自的作用域,如果你不通過global來定義變量另外一個文件是訪問不了這個文件的變量的。當(dāng)然如果你想在一個文件訪問另外一個文件的變量,除了global以外還有一種方法,后面我們會說到。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
node.js連接mongoDB數(shù)據(jù)庫 快速搭建自己的web服務(wù)
這篇文章主要為大家詳細(xì)介紹了node.js連接mongoDB數(shù)據(jù)庫,如何快速搭建自己的web服務(wù),感興趣的小伙伴們可以參考一下2016-04-04
史上無敵詳細(xì)的Node.Js環(huán)境搭建步驟記錄
Node.js是一個事件驅(qū)動I/O服務(wù)端JavaScript環(huán)境,由于其擁有異步非阻塞、環(huán)境搭建簡單、實踐應(yīng)用快等特性,使得其在新一代編程開發(fā)中更為流行,下面這篇文章主要給大家介紹了關(guān)于Node.Js環(huán)境搭建步驟記錄的相關(guān)資料,需要的朋友可以參考下2023-03-03
利用node實現(xiàn)一個批量重命名文件的函數(shù)
這篇文章主要給大家介紹了關(guān)于利用node實現(xiàn)一個批量重命名文件的函數(shù)的相關(guān)資料,文中通過示例示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
Node.js中Express生成Token的實現(xiàn)方法
本文介紹了在Express中生成和使用Token進行用戶認(rèn)證的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12

