问题标签 [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.
javascript - Javascript变量范围问题
我有一个简单的范围界定问题让我感到困惑。
这是代码的更简单版本,但采用相同的原理。
selector_1
myVAR
问题是,如果用户每次单击都会成功填充,但是,第二个目标处理程序将始终返回myVAR
未定义。
我假设这是一个编程 101 类型的东西,但是我还没有找到一个简单的答案。
谢谢你看看这个!批评公开赞赏。
vb.net - vba 语言中变量作用域的类型
我试图理解 VBA 范围类型,在 VBA 中不可能做到这一点,但在其他语言(java、scala 等)中是可能的:
你能给我一些关于这种有限范围的信息吗?它是动态的或词汇的,我不太明白其中的区别:/
sql - 子句范围
我正在为一家拥有 SQL Server 2008 的公司做一些工作。他们的一个存储过程引用(或似乎引用)一个不存在的列,但没有错误。
查询具有以下结构:
** BAZ 不包含名为 [datecreated] 的列,但 FOO 包含。** 如果我更改查询以限定列名,如下所示,会出现错误:
如果这是设计行为,有人可以指点我相关的文档吗?谢谢
c++ - c ++:访问包含想要访问的类的类的成员
除了使用“周围类”的引用之外,在 C++ 中是否可以修改“包围”类 B(在“上”范围内)的类 A 的成员?
代码在这里: http: //pastebin.com/iEEu9iZG
目标是GFullScreen
使用与全屏变量相同的值来修改变量。我知道我可以传递GFullScreen
整个 Game 类的指针或引用。还有其他方法可以访问它吗?哪个更有效率?
javascript - Javascript:z = z || [] 在不使用 VAR 时抛出错误 - 为什么?
出于求知欲,为什么 javascript 接受
初始化 z(如 z 最初定义的那样)
但没有 var,它会引发错误(在全局空间中)
(如果 z 以前未定义)
在全局空间中,您不需要使用 VAR,尽管我知道这可能是不好的做法。
在你说这是重复的问题之前
请注意“如果您在全局范围内,则没有区别”的声明。
鉴于我的工作示例,显然这不是 100% 正确的。
这是一个怪癖还是有合理的逻辑?
添加我所学的答案摘要:
感谢 Tim(见下文),我误解的关键是没有意识到这一点(javascript 基础)
变量 z; 如果 z 已经存在,则什么都不做
如果您错误地假设“var z”总是初始化,这就是这个表达式似乎有两种方式的方式。
从左边开始,“var z”只是确保 z 已定义,但实际上不会影响任何现有值(如果它已经存在)。然后在右边,如果 z 已经存在,则使用它,如果不存在,则该变量刚刚声明(但为空),因此不会使用但不会抛出错误。
这是一篇关于 Javascript 中这种范围界定和提升问题的优秀文章:http: //www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
非常感谢 minitech 和其他所有做出贡献的人!
mongodb - 我应该什么时候打开和关闭 MongoDB 连接?
一般来说,我对 MongoDB 和 NoSQL 很陌生,我刚刚开始使用 MongoDB / Norm / ASP.NET MVC 3 构建一个站点。
我想知道我应该如何确定与我的 Mongo 数据库的连接范围。
现在我有一个 Basecontroller 实例化 MongoSession 和 onActionExecuted 我处理它,所以我所有的派生控制器都可以访问我的 MongoSession。MongoSession 类在其构造函数中打开一个连接并将其释放到 Dispose() 上,这是它目前的工作方式。
我有点担心如果我还在控制器中做其他事情,它可能会保持连接打开太久。
这种方法是否足以避免打开太多连接的风险,或者我应该做一些更像下面的示例方法的事情?
另一个后续问题是:
是否通过 Norm “昂贵”的操作打开和关闭 MongoDB 连接?
ruby - 跨类的 ruby 变量作用域
鲁努比在这里。我有一个Login
使用net/IMAP
库登录到 gmail 的类。发生的事情是我创建了该类的一个新实例,例如:
然后,我正在研究其他将使用邮箱做一些“东西”的课程。问题是@imap
我在 Login 中定义的变量似乎已经消失了(由于我假设的范围)。
这是@imap
在 Login 类中声明的方式:
@imap = Net::IMAP.new('imap.gmail.com',993,true,nil,false)
所以这:
...返回错误。这是我在玩这个时遇到的两个错误。第一个是我使用imap
的时候,第二个是我尝试的时候@imap
:
处理这种情况的最佳做法是什么?是在创建 Net::IMAP 的新实例的同一类中定义我的方法的唯一解决方案吗?声明@imap
为全局变量$imap
是一种不好的做法吗?如此困惑,我敢打赌答案也非常简单明了,但我只是没有看到。谢谢!
pseudocode - 本练习中的静态和动态范围界定有什么区别?
我在处理静态范围和动态范围时感到困惑,对于这个伪代码,我必须找到两者。对于两者,我认为它应该打印出来: 9 4 2 3 但是,我并不完全确定。任何帮助将不胜感激,谢谢。
events - 如何从 Node.js 中的嵌套函数内部向 eventListener 发出(javascript 范围问题)
我在下面编写代码,一次解析一个站点 API,然后告诉事件队列它已准备好解析下一个对象。我遇到了一些问题,因为我还是 javascript 范围的新手,并且想从 SiteParser 发出或调用 emitForNext 函数。我似乎无法在错误回调中将 emitForNext 纳入范围。