导入模块是否意味着将模块的代码嵌入到导入语句所在的行吗?
P粉269847997
P粉269847997 2023-09-16 18:25:30
0
1
281

从ReferenceError: can't access lexical declaration 'X' before initialization - JavaScript | MDN中,有一个无效导入的示例:

a.js(入口模块):

import { b } from "./b.js";

export const a = 2;

b.js

import { a } from "./a.js";

console.log(a); // ReferenceError: Cannot access 'a' before initialization
export const b = 1;

MDN解释:

在这个例子中,导入的变量a被访问,但是未初始化,因为a.js的评估被当前模块b.js的评估阻塞。

我理解这个意思是导入一个模块意味着将模块的代码嵌入到导入语句的行。也就是说,编译时a.js变成了这样:

console.log(a); // ReferenceError: Cannot access 'a' before initialization
const b = 1;

const a = 2;

这个理解正确吗?我没有在import - JavaScript | MDN中看到这个解释。由于变量提升,我不知道如何测试这个问题,因为重新排列a.js中的行不会改变结果。

P粉269847997
P粉269847997

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!