问题标签 [scope]

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 投票
1 回答
1985 浏览

php - 确保 MySQL 连接在 PHP 函数中有效

我有以下形式的代码:

这种(类型的)代码不起作用,因为 doSomething() 没有与数据库的连接。谁能解释为什么不?我在调用 doSomething()之前创建了 $con 连接。那么为什么这个函数表现得好像没有连接一样呢?

除了将连接传递给 doSomething($con) 之类的函数之外,有没有办法解决这个问题?

0 投票
2 回答
9213 浏览

c++ - 私有成员变量范围 - C++

我刚从 C++ 开始,在理解类中私有成员变量的范围如何工作时遇到了一些问题。请看下面的代码

在上面的代码中,变量“容器”是一个私有成员变量。我正在调用“Foo”实例并将其传递给其他几个方法和类。以下是我的疑惑

  1. 变量“容器”的范围是什么?在我删除实例 foo 之前,该变量是否存在?
  2. 我需要将“容器”作为指向向量的指针吗?

谢谢您的帮助

0 投票
4 回答
7484 浏览

python - Python 全局变量、局部变量和 UnboundLocalError

我最近遇到了这种情况UnboundLocalError,这似乎很奇怪:

产生:

pprint明确地绑定在 中globals,并且将locals在以下语句中绑定。有人可以解释为什么它不乐意解决这里pprint的绑定globals吗?

编辑:感谢良好的回应,我可以用相关术语澄清我的问题:

在编译时,标识符pprint被标记为框架的本地。执行模型在框架内绑定本地标识符的位置是否没有区别?是否可以说“在此字节码指令之前引用全局绑定,此时它已被重新绑定到本地绑定”,或者执行模型是否没有考虑到这一点?

0 投票
6 回答
7533 浏览

c# - 委托中的变量范围

我发现以下内容很奇怪。再说一次,我主要在动态语言中使用闭包,这不应该被同一个“错误”怀疑。以下使编译器不高兴:

它说:

不能在此范围内声明名为“i”的局部变量,因为它会给“i”赋予不同的含义,而“i”已在“子”范围中用于表示其他内容

所以这基本上意味着在委托中声明的变量将具有在其中声明的函数的范围。不完全是我所期望的。我什至没有尝试调用该函数。至少 Common Lisp 有一个特性,你说一个变量应该有一个动态名称,如果你真的希望它是本地的。这在创建不泄漏的宏时尤其重要,但类似的东西在这里也很有帮助。

所以我想知道其他人如何解决这个问题?

为了澄清我正在寻找一种解决方案,其中我在委托中声明的变量不会干扰委托之后声明的变量。而且我希望仍然能够捕获在委托之前声明的变量。

0 投票
22 回答
3648691 浏览

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

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

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

0 投票
4 回答
9890 浏览

javascript - 封闭外部范围时如何取消引用 JavaScript 变量

好的,这是一个问题脚本。

此脚本使用数组生成三个 div:一、二和三。
我在每个 div 上设置了一个(为简单起见是 Dom0)单击处理程序,它会提醒其在数组中的位置索引。- 除了它没有!它总是提醒 3,数组的最后一个索引。
这是因为 'alert(i)' 中的 'i' 是对外部范围(在本例中为全局)的实时引用,并且在循环结束时其值为 3。它需要的是一种在循环中取消引用 i 的方法。

这是一种解决方案,我倾向于使用它。

其他人有什么不同的吗?
有没有真正聪明的方法?
有谁知道图书馆是如何做到这一点的?

0 投票
9 回答
25430 浏览

python - 如何创建 lambda 列表(在列表理解/for 循环中)?

我想从 Python 中的常量列表创建一个 lambda 对象列表;例如:

但是,当我运行它们时,这将创建一个 lambda 对象列表:

我希望它会打印

相反,它打印:

似乎所有 lambdas 都被赋予了错误的参数。我做错了什么,有没有办法解决它?我认为我在 Python 2.4 中。

编辑:多一点尝试的东西等等想出了这个:

打印从 1 到 25 的期望方格,然后使用前面的 print 语句:

仍然给我所有25的s。这两个打印调用之间现有的 lambda 对象是如何变化的?

相关问题:为什么 map() 和列表理解的结果不同?

0 投票
3 回答
18641 浏览

xslt - 如何从嵌套循环中访问外部循环中的元素?

我嵌套了 xsl:for 循环:

从内部循环中,如何从外部循环中的当前节点访问属性?

我不断发现自己在编写这样的代码:

这不能很好地扩展,因为有时我需要访问多条信息并最终为每条信息创建一个变量。有没有更简单的方法?

0 投票
4 回答
71648 浏览

c# - C# 中的私有内部类 - 为什么不经常使用它们?

我对 C# 比较陌生,每次开始从事 C# 项目时(我只从事过 C# 中几乎成熟的项目),我想知道为什么没有内部类?

也许我不明白他们的目标。对我来说,内部类——至少是私有内部类——看起来很像 Pascal / Modula-2 / Ada 中的“内部过程”:它们允许将主类分解成更小的部分,以便于理解。

示例:这是大多数时候看到的内容:

由于 ClassB 将仅由 ClassA 使用(至少一段时间),我的猜测是这段代码会更好地表达如下:

我很高兴收到你关于这个问题的消息——我说得对吗?

0 投票
5 回答
64826 浏览

javascript - 轻松设置“this”变量?

我对 Javascript 有很好的理解,除了我想不出一种设置“this”变量的好方法。考虑:

如果没有最后 4 行,有没有办法做到这一点?这很烦人......我尝试绑定一个匿名函数,我认为它既漂亮又聪明,但无济于事:

显然,将变量传递给 myFunction 是一种选择......但这不是这个问题的重点。

谢谢。