繁体   English   中英

无法重新分配NodeJS全局变量

NodeJS global variable not reassignable

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试对使用JavaScript库的代码进行单元测试,该JavaScript库设置了全局变量(如果不存在)。 库使用的模式是:

var GLOBAL_VAR = GLOBAL_VAR || {}

这在浏览器世界中有效,但是当我在NodeJS中执行代码时,它不起作用。 问题归结为:

var myGlobal = 'CORRECT';
console.log('Prints CORRECT', myGlobal || 'WRONG');
(function () {
  // Why does this print WRONG?
  var myGlobal = myGlobal || 'WRONG';
  console.log('Prints WRONG', myGlobal);
}).call(this);

(function () {
  console.log('Prints CORRECT', myGlobal || 'WRONG');
}).call(this);

为什么第一个功能打印错误,而第二个功能打印正确?

1 个回复

您正在第一个匿名函数中声明局部变量myGlobal 这遮盖了全局变量。

然后,在匿名函数中,声明:

var myGlobal = myGlobal || 'WRONG';
//             ^
//             |  this local variable is undefined here, as
//                the global is not accessible with this name

这就是为什么myGlobal (局部变量)获得值'WRONG'

解决方案是将匿名函数中名称混乱的局部变量myGlobal重命名为myGlobal全局变量的变量。

请注意,如果使用let as let不允许将变量用作其自己的声明中的值,则不会有此问题:

let x = x || 'WRONG'; // should produce an error and leave x undefined.
1 WordPress无法重新分配自动全局变量_POST

我有一个直到最近才有效的插件。 一天早上,我醒来发现网站瘫痪了。 我禁用了该插件,当我进行反应时,出现以下错误: 致命错误:无法在第213行的.......... / icalculator.php中重新分配自动全局变量_POST 这是第213行以及其后的一些行。 任何想法 ...

2 无法重新分配python全局变量

这个问题已经得到了多次回答,但没有应用程序为我修复它。 我有 a、b 和 c 类,我在 a 类中初始化了一个变量,我想重新分配 b 类中的值并在 c 类中调用新值。 我的代码太长而无法完全复制它,但这就是逻辑没有加起来的地方。 为什么我没有得到约翰的输出,只有 '' 一个.py b.py ...

2020-10-29 09:37:14 0 22   python
3 无法在 JavaScript 函数中重新分配全局变量

我在从 JavaScript/jQuery 函数内部重新分配对象属性的值时遇到问题。 我正在对表单元素中的六个输入字段编写一些基本验证,以确保这些字段不为空。 一旦所有输入字段都有一个值,我想在最初隐藏的表单中显示其他输入字段。 我遇到的问题是我无法从我的函数中更新我的对象属性。 我在函数中传 ...

4 无法在 onEdit 函数中重新分配全局变量

所以我试图从 onEdit 函数中更新一个全局变量,但它不会重新分配。 它似乎保留了它的原始价值。 全局变量在脚本的最顶部声明​​,因此据我所知,它不应该是提升问题。 在 onEdit 中有: 测试 1 和 2 引用只是用于测试 onEdit 代码前后结果的两个不同单元格(在 Google ...

5 无法重新分配自动全局变量_POST

我收到以下错误: Fatal error: Cannot re-assign auto-global variable _POST in C:\\Program Files (x86)\\Zend\\Apache2\\htdocs\\includes\\class-insert.php on l ...

2014-03-17 16:13:54 2 5916   php
6 重新分配全局变量

如何将变量globvar从0更新为1 ? 此代码段( Paul Stephenson的所有学分 )应打印1 。 实际上,当我在在线Python游乐场中对其进行测试时,它就可以工作,例如在这里 。 但是由于某种原因,在Sublime(ST3 build 3126)中,它显示0 。 ...

7 重新分配全局变量

该段代码应该对内置全局变量存根(出于测试或调试目的): Date全局已经在TypeScript库定义中声明,并且rhis将导致错误: 无法分配给“日期”,因为它是常量或只读属性。 我试图避免将其称为this['Date']因为它与严格模式和window['Date']或 ...

8 如何重新分配全局变量C ++

这个问题已经在这里有了答案: 不能在全局范围内使用结构 2个答案 为什么我不能像在python中那样重新分配全局变量int x? 但是如果我把它放在功能上工作正常吗? 谢谢,我是C ++新手 ...

2018-09-01 02:35:00 1 77   c++
10 从函数中重新分配全局变量

在关于JavaScript对象的(Udacity)课程的一部分中,它说因为基元是不可变的,所以对函数内部的参数所做的任何更改都会有效地创建该函数的局部副本,而不会影响它之外的基元。 这是提供的示例: 但是,如以下示例所示,您可以在函数内更改分配给全局变量的值(只要变量名称不作为参数传递 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM