从函数体访问ESM模块范围

问题描述 投票:0回答:1

在 ESM 之前,我可以访问

module
变量。

我明确不想这样做:

const bar = 1

export function foo() {

  bar

}

我想做这样的事情:

export function foo() {

  module.bar = 1

}

global
是我唯一的选择吗?


编辑:我突然想到我可以使用函数作用域。这可以为模块范围提供类似的功能。

export async function foo() {

  foo.bar = 1

}

编辑:实际上,如果它是异步的,这会导致问题。

javascript es6-modules
1个回答
0
投票

不,没有。作用域不是对象(支持全局作用域的全局对象除外)。

不要试图混淆这些概念。如果你想要一个变量,就声明一个变量!这将使您和其他使用该代码的人变得更容易。

© www.soinside.com 2019 - 2024. All rights reserved.