ESM 模块化中的this
时间: 2024-06-14 17:07:39 浏览: 120
JavaScript_ESM
ESM(ECMAScript Module)模块化中的this指向undefined。在ESM模块中,this的值是undefined,而不是指向全局对象(如window或global)。这是因为ESM模块在加载时会创建一个独立的作用域,并且this的值在模块内部是固定的。
这种行为与CommonJS模块规范不同,CommonJS模块中的this指向当前模块的导出对象。但在ESM模块中,this的值是undefined,这是为了避免在模块中意外地访问全局对象。
下面是一个示例代码,演示了ESM模块中this的行为:
```javascript
// module.js
console.log(this); // 输出:undefined
export function foo() {
console.log(this); // 输出:undefined
}
// main.js
import { foo } from './module.js';
foo(); // 调用foo函数,输出:undefined
```
在上面的示例中,当在ESM模块中打印this时,输出的是undefined。同样,在调用foo函数时,foo函数内部的this也是undefined。
阅读全文