模块(./lib/myModule.js
):
const X = 10;
export default { X }
主模块(./index.js
):
案例 1:
import { X } from './lib/myModule'
console.log(X) // undefined
案例 2:
import myModule from './lib/myModule'
const { X } = myModule;
console.log(myModule.X) // 10
console.log(X) // 10
为什么当使用对象匹配符号返回 X
为未定义并导入完整对象时,成员保留他的值?第一个案例有什么问题?
我正在使用 Babel 通过 preset-es2015
转换 ES 6 代码。
最佳答案
那是因为 import 语句没有使用解构赋值。在第一种情况下,您尝试导入未导出的成员 X
。在第二种情况下,您将导入默认成员,然后使用 destructuring assignment 从中提取 X
.
在第一种情况下,Babel 将 console.log()
行转换为:
console.log(_myModule.X); // undefined
而在第二种情况下你会得到这个:
console.log(_myModule2.default.X);
关于javascript - 导入语句将模块成员返回为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40056448/