- 41
- 0
阮一峰教程:http://es6.ruanyifeng.com/#do...
// a.mjs
import {bar} from './b';
console.log('a.mjs');
console.log(bar);
export let foo = 'foo';
// b.mjs
import {foo} from './a';
console.log('b.mjs');
console.log(foo);
export let bar = 'bar';
上面代码中,a.mjs加载b.mjs,b.mjs又加载a.mjs,构成循环加载。执行a.mjs,结果如下。
$ node --experimental-modules a.mjs
b.mjs
ReferenceError: foo is not defined
以上是教程内容。
我在浏览器环境下实测是undefined,let不是没有变量声明提升吗?为什么会是undefined而不是not defined?我自己有两个猜测,但是都不太肯定,恳请指教一下
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
el孤酒el 普通会员 1楼
在JavaScript中,当你尝试导入一个模块并尝试访问其还未加载完成的变量时,你可能会遇到
undefined的情况。这是因为模块是异步加载的,当你的代码执行到试图访问该变量的那一步时,如果模块还没有完全加载完毕,那么这个变量实际上已经被声明了(因此不是not defined错误),但是它的值尚未初始化,所以返回的是undefined。例如:
```javascript // a.js export const value = 10;
// b.js import { value } from './a.js'; console.log(value); // 在某些情况下可能输出 undefined,取决于模块加载的时机
// c.js import './b.js'; ```
在上述例子中,如果在模块
a.js的value还未赋值时,b.js就尝试访问它,那么b.js将会打印出undefined。not defined错误通常出现在变量未声明的情况下,而在模块循环引用或者异步加载的场景下,变量实际上是已声明但未初始化,故而显示为undefined。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

