gpt4 book ai didi

javascript - 评估函数声明范围之外的变量

转载 作者:行者123 更新时间:2023-11-30 20:58:59 25 4
gpt4 key购买 nike

我有多个函数协同工作以完成一项任务。这些函数中的每一个都存在于它们自己的文件中。在我的主文件中,我编写了这些函数来完成我的任务。

因此,许多函数需要访问相同的变量。我最初的方法是在我的主文件中声明这些变量,期望我可以在我的函数中调用它们。

但是,当我运行它们时,我的函数内部出现引用错误。我目前的替代方案包括将这些变量传递给每个函数,但它似乎不太优雅。我也考虑过创建一个类,但我遇到了无法将功能分离到不同文件中(出于组织目的)的问题。

// doSomething.ts
declare outerVariable

function doSomething() {
console.log(outerVariable)
}


// main
import doSomething from './doSomething.ts'

let outerVariable = 5
doSomething() // Reference Error: outerVariable is not defined

我不认为变量阴影是个问题,因为我从不在我的函数中使用这些名称创建变量。

关于正在发生的事情或更好的代码结构方法有什么想法吗?

最佳答案

是否有方法可以完成您想要做的事情?是的,但也许这不是要走的路。

看来您需要从整体上重新考虑您的程序结构。

首先,污染全局命名空间从来都不是一个好主意(可能在任何编程语言中)。如果您使用纯函数式风格编写代码,那么是的,将变量作为参数传递给所有函数就是这样完成的。您可以在维基百科上阅读一些相关内容(第一段应该给您一个很好的概述):https://en.wikipedia.org/wiki/Functional_programming

正如您在问题的评论中指出的那样,也可能会尽量减少创建具有副作用的函数。

如果传递给这些函数的变量数量太多,也许您应该考虑将代码拆分为更小、更专业的函数/类。

单个文件通常只包含密切相关的函数或单个类。

现在,如果您不介意使用对象,那么您可以将一个或多个对象传递给函数,将所有变量分组。

此外,单例模式可能很方便:https://addyosmani.com/resources/essentialjsdesignpatterns/book/#singletonpatternjavascript .

关于javascript - 评估函数声明范围之外的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47319866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com