问题标签 [global-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
55774 浏览

objective-c - Cocoa/Objective-C 中的全局变量?

根据Cocoa Programming for Mac OS X,第 3 版,第 202 页(第 13 章):

您将在应用程序的几个类中注册、阅读和设置默认值。为确保您始终使用相同的名称,您应该在单个文件中声明这些字符串,然后只需将该文件#import 到您使用这些名称的任何文件中。有几种方法可以做到这一点。例如,您可以使用 C 预处理器的 #define 命令,但大多数 Cocoa 程序员为此使用全局变量。

这真的是正确的最佳做法吗?全局变量?这对我来说似乎很疯狂——与我所学过的一切背道而驰。

更好的设计是定义了这些的简单单例类吗?还是走向全球真的是正确的最佳实践?考虑到许多人认为单身人士是穿着漂亮衣服的全球人,还有比这更好的模式吗?

0 投票
9 回答
20081 浏览

singleton - 好吧,全局变量被谴责,单身被鄙视,还有什么办法?

对于桌面应用程序。这只是一个一般性问题,可能只需要一般性答案。

0 投票
2 回答
2188 浏览

sql - 在 ExecuteSQL 任务中访问“全局”变量

我有一个 SSIS 包,它执行以下操作: 从服务器表中选择连接字符串。连接字符串或者是服务器的名称以及域(即 Dalin.myhouse.com),或者是服务器的直接 IP。

该包遍历每个连接字符串并填充定义的“全局”变量。此变量是在变量设计器中创建的。对于每个连接字符串,包将检索有关服务器的信息。

我遇到的问题是,当您将服务器 IP 添加到列表时,当时可能不知道“友好名称”,所以我只会在连接字符串列和友好名称列中都有服务器 IP桌子。我想在迭代结束后更新该表中服务器条目的友好名称列,以便使用 SERVERPROPERTY('Servername') 从服务器中提取服务器名称

为此,我想使用带有以下代码的 ExecuteSQL 任务:

前面的代码使用到 myServers 表所在的服务器的静态连接。

VarA 表示我要设置的全局值 ServerName 将通过使用 SERVERPROPERTY('Servername') 在单独的 SQLTask 中设置。它需要在一个单独的任务中,因为它必须使用当前迭代正在使用的同一服务器连接到服务器。

VarB 在每次迭代开始时设置为列表中的下一个连接字符串。

我已经看到了有关如何将其用于脚本任务和脚本组件的示例,但我想简单地使用 ExecuteSQL 任务来完成此操作。

总结:
连接ServerA,填写两个全局变量。
连接到 ServerB 并使用两个全局变量来更新表中的特定行。

有任何想法吗?

0 投票
10 回答
271852 浏览

javascript - 从其他函数访问变量而不使用全局变量

我从很多地方听说全局变量本质上是讨厌和邪恶的,但是在做一些非面向对象的 Javascript 时,我看不出如何避免它们。假设我有一个函数,它使用复杂算法使用随机数和其他东西生成一个数字,但我需要在其他函数中继续使用该特定数字,该函数是回调或其他东西,因此不能成为同一函数的一部分。

如果最初生成的数字是局部变量,则无法从那里访问它。如果函数是对象方法,我可以将数字设为属性,但它们不是,并且更改整个程序结构来执行此操作似乎有些过于复杂。全局变量真的那么糟糕吗?

0 投票
1 回答
3039 浏览

c# - 为请求的持续时间设置全局变量

我可以为单个请求的长度设置某种全局变量,以便页面的所有控件都可以响应它,而不必将其传递给每个控件吗?

例如,如果有人在我的 MasterPage 上点击了 Save 按钮,我可以设置一些东西,以便我的 Page 上的每个 UserControl 都可以有一个 Page_Load,例如:

这似乎比让来自母版页的委托调用 Page 的保存函数,然后调用 UC1.saveData() 到每个 UserControl 容易得多,尽管我知道这是更好的面向对象思维。

0 投票
22 回答
3648691 浏览

python - 在函数中使用全局变量

如何在函数中创建或使用全局变量?

如果我在一个函数中创建一个全局变量,如何在另一个函数中使用该全局变量?我是否需要将全局变量存储在需要访问的函数的局部变量中?

0 投票
2 回答
72876 浏览

delphi - 当我直到运行时才知道长度时如何声明数组?

我最初有一个被定义为全局变量的数组[1..1000]。但是现在我需要将其设为 n,而不是 1000,并且直到稍后我才知道 n。在填充数组之前我知道 n 是什么,但我需要它是全局的,因此需要一种在运行时定义全局数组大小的方法。

上下文正在用文件中字节的线性变换填充数组。我不知道文件有多大,直到有人想要打开它并且文件可以是任意大小。

0 投票
2 回答
16192 浏览

delphi - Delphi中的全局变量

我有一个用 Delphi 编写的控制台应用程序。我看到我可以通过将全局变量分配给单元范围来获得全局变量,但是在控制台应用程序中我不使用单元(据我所知,它只是表单)。

0 投票
2 回答
447 浏览

c# - 在 C# 中获取全局设置

以这篇关于类和结构的文章为例:

http://msdn.microsoft.com/en-us/library/ms173109.aspx

假设我想使用在程序其他地方的 Main 例程中定义的“myClass”,就好像它是一个全局类一样。

我该怎么做?

0 投票
4 回答
757 浏览

c++ - 创建全局已知并自动删除的临时目录(C++)?

在 C++ 中,我有一些函数需要写入临时目录。理想情况下,只创建一个它们都写入的临时目录(以最小化 I/O 开销)。该目录应在程序退出时自动删除。

但是,我不想在主函数中处理临时目录的创建和删除,因为我认为只有实际使用该目录的函数才应该负责它的创建和删除。并且 main 函数并不一定知道使用了一个临时目录。

这是我尝试过的(参见下面的代码): 可以从任何地方全局调用的 getTempDir() 函数仅在第一次调用时创建一个目录,并在每次调用时返回目录名称。在第一次调用时,它还会为一个小 DirRemover 对象创建一个静态 boost::shared_ptr,该对象的析构函数将删除目录。程序退出时会自动调用该析构函数。

问题是它不会在程序不成功退出或杀死等时调用 FileRemover 析构函数。有更好的解决方案吗?

这是代码: