亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

模塊變量存儲在node.js中的作用域是什么?

模塊變量存儲在node.js中的作用域是什么?

翻閱古今 2019-07-04 17:39:12
模塊變量存儲在node.js中的作用域是什么?當我在node.js模塊中這樣做時:var abc = '123';它到哪里去了?我的意思是:在瀏覽器中window.abc(如果沒有在函數中執行或以其他方式執行)如果我執行這個:abc = '123';然后我就能在里面找到它global.abc但這不是我想要的。
查看完整描述

3 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

與默認將變量分配給全局空間(即窗口)的瀏覽器不同,節點變量的作用域為模塊(文件)。除非你明確把它們分配給模組。

事實上,當你跑node myfile.jsrequire('somefile.js')文件中的代碼包裝如下:

(function (exports, require, module, __filename, __dirname) {
     // your code is here});


查看完整回答
反對 回復 2019-07-04
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

所有其他答案都是100%正確的,但我想我應該在Node.js應用程序中添加一個擴展的/確定的范圍列表,以防任何人在開始學習Node.js或JavaScript時通過Google發現這一點:

全球范圍

任何聲明沒有var任何文件中的關鍵字都可以從節點服務器的同一實例中運行的任何位置訪問:

// foo.jsbar = 'baz';// qux.jsconsole.log(bar); // prints 'baz'

請注意,這被廣泛認為是個壞主意,因為它使您的應用程序具有很強的“耦合性”-這意味著您必須打開foo.js才能找到原因。bar = 'baz'在qux.js中

模塊范圍

聲明的任何內容。var在node.js文件的頂層(而不是在函數或對象或任何其他塊內)的關鍵字位于模塊范圍,并且可以從同一文件中的任何位置訪問,但在其他任何地方都不存在:

// foo.jsvar bar = 'baz';console.log(bar); // prints 'baz'// qux.jsconsole.log(bar); // prints 'undefined'

功能范圍

使用var函數中的關鍵字只能從該函數中訪問,而不能從其他任何地方訪問:

// foo.jsfunction myFunction() {
  var bar = 'baz';
  console.log(bar); // prints 'baz'}function myOtherFunction() {
  console.log(bar); // prints 'undefined'}// qux.jsconsole.log(bar); // prints 'undefined'

JavaScript是功能范圍..不像其他(塊作用域)語言,在函數塊中聲明的變量可以從父函數中的任何其他地方訪問。..例如,這意味著如果在循環中聲明一個新變量,那么只要仍然在父函數中,它也可以在該循環之外訪問:

function myFunction() {
  while (thing === true) {
  var bar = 'baz';
  thing = false;
  }
  console.log(bar); // prints 'baz'}

遮蔽

如果您‘重新聲明’了一個現有變量,例如使用var關鍵字,其變量名已被使用,則與該變量名關聯的值為在新聲明的范圍內覆蓋:

var bar = 'foo';console.log(bar) // prints 'foo'function myFunction() {
  var bar = 'baz';
  console.log(bar);}myFunction(); // prints 'baz'console.log(bar) // prints 'foo'


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 768 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號