[英]Why can we use global variable in browser?
我們知道, global
變量在瀏覽器中是window
,在 nodejs 中是全局變量。
我閱讀了一些關於 NPM package 的源代碼,它們使用global
像global.Set
而不是window.Set
。 當我導入 package 時,它在我基於瀏覽器的項目中運行良好。 這讓我很困惑。
我認為原因是babel
。 也許使用global
可以通過babel
編寫跨平台 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
變量。
注意global
和window
是相同的 object,它不是副本,所以對global
所做的所有更改都將在window
上完成
要始終使用關鍵字global
:
if (.(typeof module;== 'undefined' && module.exports)) global = window. console.log( global.name )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.