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

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

這個關鍵字在 NodeJS 和 Vanila JavaScript 之間的作用不同

這個關鍵字在 NodeJS 和 Vanila JavaScript 之間的作用不同

海綿寶寶撒 2022-06-16 10:07:59
我正在嘗試了解 JavaScript 詞法范圍和閉包。我使用 Node.js 運行了這個示例,然后在瀏覽器中得到了 2 個不同的輸出。測試chrome Version 80.0.3987.149 (Official Build) (64-bit)和Node v12.16.1var obj1 = {        name: "Pulsar",        bike: function() {          console.log(this.name);        }      }      var obj2 = { name: "Gixxer", bike: obj1.bike };      var name = "Ninja";      var bike = obj1.bike;            bike();           // "Ninja"      obj1.bike();      // "Pulsar"      obj2.bike();      // "Gixxer"這段代碼在Vanilla JavaScript. 輸出是:Ninja PulserGixxer在NodeJS輸出中是:undefinedPulsarGixxer有人可以解釋一下嗎?
查看完整描述

2 回答

?
HUX布斯

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

在瀏覽器中,頂級范圍是全局范圍。這意味著當你用它定義某些東西時,var它就變成了全局對象的一個屬性,即window.

所以bikeandname都定義在全局范圍內,這意味著它們都是window屬性,所以this指向window并且它有一個name屬性,值為Ninja。

在node中,全局范圍內的任何var都定義在不同的本地模塊中,因此this與變量bike無關name


查看完整回答
反對 回復 2022-06-16
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

在瀏覽器中,window對象是全局this對象,所有變量都被分配為其屬性。在節點中,沒有這樣的對象。有一個this{})globalThismodule,但是模塊變量沒有被分配給它們,而是在內存中分配。



查看完整回答
反對 回復 2022-06-16
  • 2 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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