为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我们可以在浏览器中使用全局变量?

为什么我们可以在浏览器中使用全局变量?

阿波罗的战车 2021-10-21 17:16:24
我们知道,全局变量window在浏览器和globalnodejs 中。我读到一些NPM包的源代码,他们使用global类似global.Set的代替window.Set。当我导入该包时,它在我基于浏览器的项目中运行良好。这让我很困惑。我认为原因是babel。也许使用global可以编写跨平台包babel?但它是如何工作的。
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

我不是 babel 或 webpack 的专家,远非如此,但是查看 webpack 的输出代码,您可以看到 webpack 正在将global变体注入您的代码,如果您使用它,那么如果我们有一个简单的代码,例如:

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);

这是我们的输出:

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\"] =

你可以清楚地看到变化。

发现这个问题,您可能会发现它有助于解决这个问题。

从我的理解巴贝尔使用这个内部,所以出口,如果你在代码中使用它。

请注意,您无法global在控制台中访问变体。

注意 globalwindow是同一个对象,它不是副本,因此对 所做的所有更改global都将在window


查看完整回答
反对 回复 2021-10-21
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信