javascript - 导出某些内容时,函数中的 "this"未定义

标签 javascript node.js

以下示例按预期工作,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/

相关文章:

javascript - 打开 Websocket 之前进行身份验证

javascript - 带有输出百分比的jquery自定义字符串比较函数

javascript - Dgrid 对具有一列的数据源执行更新

javascript - 使用 Google Calendar API 返回 401(未授权)

javascript - 目录导入索引文件无法正常工作

node.js - 用户模型的环回ACL

sql-server - 如何在 mssql(node.js) 中使用 Like 运算符

jquery - 使用jquery解析node.js服务器中的json给出404错误

javascript - 使用 Axios 时出错,但在 Postman 中响应正确

javascript - Google 图表堆叠条形图的 JSON 格式