以下示例按预期工作,console.log(this)
返回方法、变量等
function foo() {
console.log(this);
}
foo();
但是,这不会:
export const something = 'anything';
function foo() {
console.log(this);
}
foo();
在这种情况下,conosle.log(this)
未定义。为什么?
最佳答案
我猜您正在运行没有 --experimental-modules
标志的第一个示例,但您正在运行带有该标志的第二个示例。
ESM 模块中的代码始终处于严格模式。在严格模式下,如果您在调用期间不执行某些操作来设置 this
的内容(使用 foo();
时不会这样做),则调用中的 this
会获取值 undefined
。但在松散模式(有时称为“草率”模式)下,foo();
在调用期间将 this
设置为全局对象。
关于javascript - 导出某些内容时,函数中的 "this"未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56053880/