logologo
  • WebUI
  • JavaScript
  • TypeScript
  • C++
  • ··
    • C
    • Rust
    • Python
    • Cangjie
    • SQL
    • Design
    概述
    常见的数据结构
    ecmascript相关
    enumerable
    Object 内部实现
    sameValue 算法
    unicode
    语法设计
    声明
    表达式
    模块
    语句
    严格模式
    类型系统
    Array
    typedArray
    Map
    Number
    Object
    Set
    String
    结构化
    基本的组织元素
    动态性
    并发性
    范式
    函数式
    函数的行为
    闭包
    函数
    从运算式语言到函数式语言
    语言的多范式

    Last Updated: 11/30/2025, 3:14:53 PM

    Previous page表达式Next page语句

    #模块

    #模块的声明和加载

    以下行为被识别为模块:

    • .html文件中写<script type="module">标签
    • .js文件中写export语句
    • .js文件被导入(不论该文件中有无 export 关键字),js 引擎会创建导出名字表(非模块的导出名字为空)

    加载模块的方式

    // 简单装载: 1,顶层代码会被按顺序执行一次。2,首次加载即缓存,因此常用来做预加载模块
    import "module-name";
    
    // (模块或接口)命名导入
    import another-name from "module-name";
    import defaultExportName as another-name from "module-name";
    import { x,y as z } from "module-name";
    import another-name,{x,y} from "module-name";
    
    // 名字空间导入
    import * as name-space from "module-name";
    
    // 混用: 导入模块的默认导出,导入模块的具名导出为命名空间对象
    import defaultExport, * as name-space from "module-name";

    声明模块的方法

    // 导出未声明
    export let key1,key2=...,...,keyn;
    export function fn(){}
    
    // 导出已声明
    export {key1,key2,...,keyn as default};
    
    // 导出默认接口
    export default let key1;
    export default function fn(){}
    
    // 聚合导出
    export default,* as name-space from "module-name";

    #名字空间的特殊性

    TODO