ES6 —— 模块(Module)

2023-02-03 08:25:31

1,严格模式

ES6 的模块自动采用严格模式,不管你有没有在模块头部加上use strict;。

严格模式主要有以下限制。

  • 变量必须声明后再使用
  • 函数的参数不能有同名属性,否则报错
  • 不能使用with语句
  • 不能对只读属性赋值,否则报错
  • 不能使用前缀 0 表示八进制数,否则报错
  • 不能删除不可删除的属性,否则报错
  • 不能删除变量delete prop,会报错,只能删除属性delete global[prop]
  • eval不会在它的外层作用域引入变量
  • eval和arguments不能被重新赋值
  • arguments不会自动反映函数参数的变化
  • 不能使用arguments.callee
  • 不能使用arguments.caller
  • 禁止this指向全局对象
  • 不能使用fn.caller和fn.arguments获取函数调用的堆栈
  • 增加了保留字(比如protected、static和interface)

其中,尤其需要注意this的限制。ES6 模块之中,顶层的this指向undefined,即不应该在顶层代码使用this。

2,export 命令

模块功能主要有两个命令组成:exportimport

  • export命令主要用于规定模块的对外接口
  • import命令主要用于引入其他模块提供的功能

模块:一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取一个模块内部的某个变量,就必须使用export关键字输出该变量。

下面是一个js文件,里面使用export关键字向外输出变量。

// profile.js
//单个输出变量
//声明的同时,export导出
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;

上面的js文件,ES6就会视其为一个模块,里面使用export向外暴露了三个变量,
export除了向上面那样单个向外暴露变量,还可以批量向外输出变量

//批量输出变量
//先声明赋值,然后批量导出
 var firstName = 'Michael';
 var lastName = 'Jackson';
 var year = 1958;
 export { firstName , lastName , year}
  • 作者:轻风~~
  • 原文链接:https://blog.csdn.net/m0_62348004/article/details/128267137
    更新时间:2023-02-03 08:25:31