问题标签 [scoping]

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 投票
3 回答
218 浏览

jquery - 为什么我的 jQuery 变量是空的?

我是 jQuery 新手,遇到了一个问题,对于大多数前端专家来说,这可能很容易发现。

我创建了以下脚本

我试图在 getQueryString 方法中创建一个查询字符串变量,但不知何故 queryString 保持为空。选中复选框时,我看到语句 queryString.concat(concatenationCharacter).concat(checkboxName); 已达到,我看到 'contenationCharacter' 和 'checkboxName' 具有正确的值。那么为什么我的函数返回“”?

这可能是一个变量范围问题或什么的。我猜这很简单。谢谢!

0 投票
1 回答
3349 浏览

javascript - 使用coffeescript +咖啡烤面包机的backbone.js Model.get()返回未定义的范围?

我正在编写一个使用咖啡脚本和咖啡烤面包机(用于拼接的很棒的 NPM 模块)的应用程序,它构建了我的 app.js 文件。

我的许多应用程序类和模板都需要有关当前用户的信息,因此我有一个用户类实例(扩展 Backbone.Model)存储为我的主应用程序类(扩展 Backbone.Router)的属性。

作为初始化例程的一部分,我从服务器获取用户(它负责身份验证、角色、帐户切换等)。这是咖啡脚本:

第一个日志语句在控制台中输出正确的 Backbone.Model 属性对象,就像它应该的那样:

然而,第二个返回undefined尽管模型属性在记录时明确存在于控制台中。

为了让事情变得更有趣,在控制台中手动输入“window.app.user.get('email')”会返回“ben@accomplicecreative.com”的预期值......?

仅供参考,下面是初始化方法如何编译到我的 app.js 文件中:

我在我的静态 HTML 中初始化 Application 控制器,如下所示:

请提出建议,谢谢!

0 投票
1 回答
1043 浏览

r - 如何通过调用名称空间中没有它的函数来找到未附加包中的非导入方法?

R 命名空间充当其关联包中所有函数的直接环境。换句话说,当foobar()包中的函数调用另一个函数时,R 求值器首先在 中搜索另一个函数,然后在键入返回的搜索列表中搜索、、等等。<environment: namespace:foo>"imports.foo"<environment: namespace:base><environment: R_GlobalEnv>search()

命名空间的一个很好的方面是它们可以使包表现得像更好的公民:未导出的函数 in<environment: namespace:foo>和函数 inimports:foo仅可用: (a) 对foo中的函数;(b) 从foo导入的其他包;或 (c) 通过完全限定的函数调用,如foo:::bar().

或者直到最近我还以为...

行为

这个最近的 SO question强调了一个案例,在该案例中,一个隐藏在其包命名空间中的函数仍然通过调用看似不相关的函数找到:

其直接原因

@Andrie 回答了最初的问题,指出gmodels从包gdata导入,其中包括一个函数,该函数reorder.factor在第二次调用transform(). T1不同,T2因为第一个由 计算,stats:::reorder.default()第二个由计算gdata:::reorder.factor()

我的问题

在上面的调用中transform(data, group=reorder(...)),调度机制是如何reorder找到然后调度到的gdata:::reorder.factor()

(答案应包括对范围规则的解释,这些规则从涉及stats基本包中的函数的调用到gdata中看似隐藏良好的方法。)


更多可能有用的细节

  1. Neither gdata:::reorder.factor, nor the gdata package as a whole are explicitly imported by gmodels. Here are the import* directives in gmodels' NAMESPACE file:

    /li>
  2. There are no methods for reorder() or transform() in <environment: namespace:gmodels>, nor in "imports:gmodels":

    /li>
  3. Detaching gmodels does not revert reorder()'s behavior: gdata:::reorder.factor() still gets dispatched:

    /li>
  4. reorder.factor() is not stored in the list of S3 methods in the base environment:

    /li>

R chat threads from the last couple of days include some additional ideas. Thanks to Andrie, Brian Diggs, and Gavin Simpson who (with others) should feel free to edit or add possibly impt. details to this question.

0 投票
4 回答
2564 浏览

c++ - 双倍为真/假

Bjarne 建议使用 if 中的条件作为范围限制。特别是这个例子。

我很好奇如何以真/假的方式解释声明。

  1. 这是一个宣言
  2. 是双倍的。

编辑:它在 6.3.2.1 C++ 编程语言中作为推荐。

Edit2:templatetypedefs 对指针的建议,特别是动态转换,可能会给 Bjarnes 建议提供洞察力。

SteveJessop 告诉我: - 条件不是表达式,它也可以是声明,使用的值是正在评估的值。

0 投票
1 回答
81 浏览

scala - 奇怪的折叠范围问题

我在调试事务查询块时遇到了这个问题。

出于某种原因,尽管在 fold left/fail 操作中发生了连接回滚,但成功/正确的结果也被回滚了。

例子:

0 投票
1 回答
3172 浏览

python-2.7 - 在函数的第二范围级别内无法访问 Python 全局变量

可能重复:
由外部模块分配的 Python 变量可用于打印,但不能用于在目标模块中分配

通常考虑其他语言的作用域规则,我有点假设 Python 的作用域规则与全局变量相似,直到我在下面的代码中遇到变量计数问题:

我收到以下错误:文件“/Users/ns/permute2.py”,第 9 行, intPermute print ("%d: %s%c%c" % (count, str(fix),var[0], var[1])) UnboundLocalError:赋值前引用的局部变量“count”

为什么 python 范围规则定义为我无法访问函数 intPermute 内部范围(if 语句)内的全局变量计数?在函数的第一个语句范围级别可以访问相同的变量吗?这是为什么?我知道可以通过在函数中定义同名的局部变量来“覆盖”全局范围变量,但这里似乎并非如此。

我能够在 intPermute 函数的开头添加以下语句来解决这个问题: 全局计数

现在,global 的这个含义对我来说并不明显,我认为 global 关键字是在全局范围内“导出”一个局部变量。

所以 2 个问题:1)为什么 Python 不允许在函数 intPermute 的二级范围内查看全局变量计数?虽然它可以在函数的第一级范围内访问?2)为什么全局关键字解决了这个问题?它是否总是适用于解决 1 级全局变量?

谢谢。

0 投票
1 回答
147 浏览

javascript - 为什么这个带有对象调用函数的 Javascript setInterval 在传入回调时不评估内部参数?

以下脚本输出 1 2 3 4 5 6 7.. 我假设它会输出 0 1 2 3 4 5 ...

事实上,在我的实际代码中,我相信 print(lostCnt) 总是连接到最新的(像全局一样的)最后一次计数更新。为什么是这样?我该怎么做才能让它保持实际的 cnt 与我无法修改 obj1 中的任何代码的约束。

谢谢,这是我的第一篇文章

0 投票
2 回答
2399 浏览

reference - Xtext 交叉引用和作用域

我对 xtext 交叉引用有一些问题这是一个非常简单的语法:

这是我的 dsl:

它总是显示“无法解析对员工 'Pooyan' 的引用”。有人可以帮我吗?我不知道...

0 投票
5 回答
1804 浏览

c# - 通过 C# 中的属性公开对象

我想编写一个静态实用程序类,它只有一组属性,向用户公开功能

例如我可以打电话:

或者

我可以将其比作最接近的是 System.Text.Encoding ,其中有 UTF8、ASCII 等属性,因此您可以调用如下内容:

或者

问题在于,在编码中,这调用了对用户公开可用的等效对象 ( UTF8Encoder, )。ASCIIEncoder我想要的是仅通过 Utils 公开对象,而不显示与属性相关的对象,例如

我可以打电话:

但我不能打电话:

这是否可能,如果是,这样做是好还是坏?

0 投票
0 回答
629 浏览

wpf - WPF中的访问键范围?

我的 XAML 如下所示,

为所有这些项目触发的 AccessKeyPressed 事件,我想限制在特定范围内。例如,如果我按 Alt+F,则应该只触发“文件”项而不是“食物”项。我怎么能限制这个。我试过e.Handled = true;。它没有帮助。

还有其他建议吗?