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