问题标签 [local-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 投票
4 回答
2985 浏览

c# - 错误 2 使用未分配的局部变量“Y”

我再次遇到了一个错误,我并不是要打扰任何人,但我在这段代码中遇到了错误:

谢谢你的回答!

0 投票
6 回答
11417 浏览

javascript - 为什么局部变量会杀死我的全局变量?

对不起这个问题,但这个问题真的搞砸了我的一天。

以下代码按照应有的方式提醒10

但是接下来的代码会提示undefined

我知道如果我在函数中声明一个变量,它是一个局部变量,但是如果我已经将它声明为全局变量,我的警报怎么会说undefined

这是一个简单的例子,但在我的原始代码中,我在函数开头之间做了很多事情,然后在很长一段时间内我检查是否globalId已定义,否则定义它:if(!globalId){var globalId;}这意味着我的警报位于函数顶部生成未定义,就好像 JavaScript 首先执行了整个函数,只是为了查看是否“可能”声明了任何变量,如果是,则声明它们,因此我的警报指向一个“未声明”的变量。

任何人都可以向我解释为什么会发生这种情况,如果 JavaScript 在执行函数之前“预先声明”所有变量是真的,甚至在条件不满足的情况下声明的变量也是如此?

0 投票
3 回答
153 浏览

memory - 什么时候对 Malloc 来说是个好主意?

我对为我的变量分配内存有点困惑。例如,如果我正在创建一个大型数据结构(数组、结构、对象等),并且在 main() 的范围内对其进行初始化,我是否应该创建一个局部变量

int chessBoard[8][8] = ...

还是我应该在堆上分配内存?

int * chessBoard = new array[8][8];
*chessBoard = ...

有关系吗?是优惠吗?一种更高效/更智能?我个人喜欢为较大的对象分配内存,我觉得对于堆栈帧来说不够小。但我真的不知道。

0 投票
5 回答
1196 浏览

java - 为什么大多数开源 java 项目中没有将局部变量声明为 final?

如果我查看 OpenJDK 或 Hibernate 或 Apache 中的 java 源代码,我还没有看到任何声明为 final 的局部变量。

这表明一些最广泛使用的 java 软件库的开发人员:

  • 不要相信 final 关键字会提高可读性。

  • 不相信它会显着提高性能。

为什么 stackoverflow 上的大多数贡献者都认为应该使用它(基于最高投票的响应)?

0 投票
4 回答
331 浏览

python - Python 2.6 在某些情况下会自动将函数定义中的变量变为全局变量?为什么?

我对为什么会发生以下情况感到非常震惊:

这是我的代码:



结果如下:


我不明白为什么 x 会改变。

我的猜测:不知何故,x 是作为函数 add_one 的全局变量。我包括了'new_array = array',这样如果array 是某种全局变量x,x 就不会改变。然而,当执行 'new_array = array' 时,不知何故 new_array 也变成了全局变量 x。我写了函数 add_one 的另一个版本,它没有给我带来问题:



似乎如果一个局部变量(即一个数组)通过它在函数中的索引进行编辑,那么它相对于作为该函数输入的全局变量变成全局变量?

我不知道发生了什么。任何解释将不胜感激。

0 投票
2 回答
13496 浏览

makefile - 在 makefile 宏中定义变量(定义)

我正在使用define创建一个宏。但是,在定义构造中,我无法创建变量。分配一个变量不会导致错误,但是当我稍后尝试使用它时,它的值为空。

例如

您可以从上面的代码中看到我正在复制这些行

$(call GENERATED_FILE,$(1),$(2),php)并且$(call GENERATED_FILE,$(1),$(3),js)来自多个地方。所以我尝试创建两个变量作为宏中的前两个语句,如下所示:

但是,如果我稍后尝试使用它们(仍在定义内),例如$(PHP_OUT_FILE)or $(JS_OUT_FILE),则变量为空。我希望能够从我的宏中删除该重复项。我做错了吗?不可能吗?还有另一种方法吗?

测试两个答案

我尝试了 eriktous 和 Ise Wisteria 的方法,它们都“有效”。两者都没有创建私有变量,只是全局变量,我可以接受,我只需要小心冲突变量,我不能进行任何递归调用(我没有计划这样做)。

eriktous 方法的问题在于,添加 $$ 使得变量在外部进行评估,也就是说,$$ 作为单个 $ 输出,并且仅在调用目标时才被评估。因此,调用宏两次将覆盖它。

伊势紫藤的方法确实可以满足我的需要。调用 eval 可确保立即声明变量,因此在对宏进行求值时,该变量可用并由宏扩展。这确实意味着我无法在宏中将其设置为两个不同的值,但我也可以接受。

这是我用来测试它的makefile

这是输出:我省略了 make 对要运行的语句的回显,以便更容易看到。

0 投票
6 回答
122 浏览

php - 如何在没有局部变量的情况下重新设计这个 PHP 代码?

我有这样的功能:

将这样的数组保存在局部变量中是一种好习惯吗?例如,它有大约 50 个标题。所以每次我调用这个函数时 - 脚本都会加载 50 个标题?

我正在考虑使用global但不是全局的坏习惯吗?

我是 PHP 新手,早期我用 JS 编写过。在 JS 中,我可以使用闭包来做到这一点:

在这里,title-array 不是全局的,每次调用该函数时它都不会加载。但是如何在 PHP 中做到这一点?

0 投票
1 回答
69 浏览

ruby-on-rails - RailsTutorial.org 书籍设计问题

嗨,我阅读了 Michael Hartl 的 RAILSTUTORIAL 书,我对他如何构建用户的显示页面有疑问。

该页面应该列出用户发布的所有帖子。

用户控制器

用户/show.html.erb

帖子/_post.html.erb

我需要在使用 post 对象的用户视图中渲染一个部分,但它要求它作为 @post 并且由于在用户控制器的显示操作中没有定义 @post 我得到一个 nil 错误。

从用户的控制器转到帖子视图并使用局部变量对我来说似乎很奇怪,如果我正确理解局部变量就不能在该视图之外使用。有没有办法将该视图中的帖子值分配给用户视图中的@post?

谢谢您的帮助

0 投票
1 回答
16458 浏览

c - 如何在 C 中引用与全局变量同名的局部变量?

例如

我认为在函数栏中,直接调用 foo 只会得到全局 foo。我如何参考当地的 foo?我知道在 C++ 中有这个指针。但是,C 有类似的东西吗?

非常感谢!

0 投票
3 回答
1138 浏览

javascript - 如何访问动态局部变量

我将如何引用动态局部变量?这可以通过全局变量轻松完成:

我将如何在本地范围内做同样的事情?


特别是我正在尝试做的事情:

根据情况,我想评估a<b 或 b<a

  • 为此,我设置了两个变量:compare1compare2
  • compare1 将引用ab而 compare2 将引用另一个
  • 评估compare1 < compare2或反之亦然

以下内容与全局变量完美配合。 但是,我希望ab是本地的。

如果在上面我设置了,那么每次更改时compare1=a我都必须重置compare1。相反,我想实际 [查看/指向] a的值。