3、import命令具有提升效果,会提升到整个模块的头部,首先执行。
foo();
import { foo } from ‘./my_module.js’;
上面的代码不会报错,因为import的执行早于foo的调用。这种行为的本质是,import命令是编译阶段执行的,在代码运行之前。
4、import是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。
// 报错
import { ‘f’ + ‘oo’ } from ‘./my_module.js’;
// 报错
let module = ‘./my_module.js’;
import { foo } from module;
// 报错
if (x === 1) {
import { foo } from ‘./module1.js’;
} else {
import { foo } from ‘./module2.js’;
}
5、如果多次重复执行同一句import语句,那么只会执行一次,而不会执行多次。
import ‘./lodash.js’;
import ‘./lodash.js’;
上面代码加载了两次lodash,但是只会执行一次。
6、import语句是 Singleton 模式。
import { foo