用代码验证,esm 导出的是值的引用,commonjs导出的是值的拷贝

首先需要学习一下 esm 和 commonjs 的区别,其中一条关于导出值我们可以手动验证一下,先记住结论

  1. esm 导出的是值的引用
  2. commonjs导出的是值的拷贝

没错我又遇到这个问题了,面试官先问我 commonjs 和 esm 有啥区别?

然后问如果 commonjs 导出一个模块,在模块内部改变一个值,模块外部的值会改变吗,我一脸懵逼?难道不是一样的么?然后又问 esm 的呢?【正确答案是commonjs 不会改变,esm 会改变】

显而易见,他想得到的区别的答案之一肯定有【导出值】的区别。很遗憾我没有答出来。

esm 导出的是值的引用

可以使用这个项目中的 vite 目录验证这个问题,因为 vite 是支持 esm的,增加几个文件用于测试

1. 增加一个模块文件导出一个数组

2. 增加两个 test 文件

分别引用上面的模块,然后其中一个改变数组的值,具体请看代码

3. 进入 vite 文件夹

运行 npm run dev

commonjs 导出的是值的拷贝

同样,可以使用这个项目中的 webpack 目录验证这个问题,因为 webpack 是支持 commonjs 的,增加几个文件用于测试。

步骤和上面一样,具体请看代码,不再赘述!

运行 cd webpack 和  npm run dev

总之牢记这两句话,【esm 导出的是值的引用,commonjs导出的是值的拷贝】问你 esm 和 cjs 的区别,这个是必答的!

上面的代码都在这个分支

别老收藏不看啊!点进去给我的仓库点点 star !!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/603920.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…

什么是多路复用器滤波器

本章将更深入地介绍多路复用器滤波器,以及它们如何用于各种应用中。您将了解到多路复用器如何帮助设计人员创造出更复杂的无线产品。 了解多路复用器 多路复用器是一组射频(RF)滤波器,它们组合在一起,但不会彼此加载,可以在输出之…

PostgreSQL入门到实战-第九弹

PostgreSQL入门到实战 PostgreSQL数据过滤(二)官网地址PostgreSQL概述PostgreSQL中and操作理论PostgreSQL中and操作实操更新计划 PostgreSQL数据过滤(二) 了解PostgreSQL AND逻辑运算符以及如何使用它来组合多个布尔表达式。 官网地址 声明: 由于操作系统, 版本更新等原因, …

LeetCode-322. 零钱兑换【广度优先搜索 数组 动态规划】

LeetCode-322. 零钱兑换【广度优先搜索 数组 动态规划】 题目描述:解题思路一:Python动态规划五部曲:定推初遍举【先遍历物品 后遍历背包】解题思路二:Python动态规划五部曲:定推初遍举【先遍历背包 后遍历物品】解题思…

查分约束学习

问题模型&#xff1a; 有n个变量&#xff1a;&#xff0c;有m个约束条件 令差分数组&#xff0c;可以知道如果x1x2<q&#xff0c;那么与j和i-1有关联 由画图可知&#xff0c;如果有在i-1至j建立的有向图中跑最短路&#xff0c;那么dis[n]即为最小的约束变量 另外&#x…

如何在ngc中找到跟物理机驱动版本匹配的docker镜像

如何在ngc中找到跟物理机驱动版本匹配的docker镜像 1.nvidia-smi查看CUDA版本2. [打开ngc官网](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch/layers)3.直到找到CUDA版本对应的Tag【比如CUDA 12.1的tag是 23.07-py3】4.拉取镜像 [Tag&#xff1a;23.07-py3]…

【攻防世界】mfw(.git文件泄露)

首先进入题目环境&#xff0c;检查页面、页面源代码、以及URL&#xff1a; 发现页面无异常。 使用 dirsearch 扫描网站&#xff0c;检查是否存在可访问的文件或者文件泄露&#xff1a; 发现 可访问界面/templates/ 以及 .git文件泄露&#xff0c;故使用 GItHack 来查看泄露的 …

提示词专场:从调整提示改善与LLMs的沟通,到利用LLMs优化提示效果

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 提示词的好坏决…

leetcode.45题:跳跃游戏II

Leetcode.45题&#xff1a;跳跃游戏II /* 题意的理解&#xff1a; nums[0] 只能跳 1 ~ nums[0]步 依次类推&#xff1a;从nums[0] - nums[n - 1] 最少需要多少步数 nums 2 3 1 1 4 nums[0] 2,初始只能跳 1/2步&#xff0c;如跳1步&#xff0c;达到nums[1] 而nums[1] 3,顾第二…

【C语言】简单介绍进制和操作符

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 本文简要介绍进制和操作符&#xff0c;愿能为您提供帮助&#xff01;文章…

HarmonyOS实战开发-如何实现电话服务中SIM卡相关功能

介绍 本示例使用sim相关接口&#xff0c;展示了电话服务中SIM卡相关功能&#xff0c;包含SIM卡的服务提供商、ISO国家码、归属PLMN号信息&#xff0c;以及默认语音卡功能。 效果预览 使用说明&#xff1a; 1.若SIM卡槽1插入SIM卡则SIM卡1区域显示为蓝色&#xff0c;否则默认…

中国科大力作 | 高性能四旋翼无人机复杂环境自主飞行规划器

作者&#xff1a;小柠檬 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 添加微信&#xff1a;dddvision&#xff0c;备注&#xff1a;3D高斯&#xff0c;拉你入群。文末附行业细分群 详细内容请关注3DCV 3D视觉精品课程&#xff1a;…