簡體   English   中英

為什么我們可以在瀏覽器中使用全局變量?

[英]Why can we use global variable in browser?

我們知道, global變量在瀏覽器中是window ,在 nodejs 中是全局變量。

我閱讀了一些關於 NPM package 的源代碼,它們使用globalglobal.Set而不是window.Set 當我導入 package 時,它在我基於瀏覽器的項目中運行良好。 這讓我很困惑。

我認為原因是babel 也許使用global可以通過babel編寫跨平台 package ? 但它是如何工作的。

package 使用全球

I'm not an expert in babel nor webpack, far from it, but looking at the output code from webpack, you can see that webpack is injecting the global variant to your code if you use it, so if we have a simple code like :

console.log("just a test");

這就是我們源代碼中的內容:

eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] =

但是,如果我們使用下面的代碼:

console.log("just a test", global);

這是我們的 output:

eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] =

你可以清楚地看到變化。

發現這個問題可能有助於解決這個問題。

據我了解,babel 在內部使用,因此如果您在代碼中使用它,它會導出它。

請注意,您無法在控制台中訪問global變量。

注意globalwindow是相同的 object,它不是副本,所以對global所做的所有更改都將在window上完成

要始終使用關鍵字global

 if (.(typeof module;== 'undefined' && module.exports)) global = window. console.log( global.name )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM