Questions tagged «scope»

范围是将值和表达式相关联的封闭上下文。对于涉及不同类型范围的问题以及范围可能不清楚的问题,请使用此标签。

8
在if语句中初始化的变量的作用域是什么?
我是Python的新手,所以这可能是一个简单的范围界定问题。Python文件(模块)中的以下代码使我有些困惑: if __name__ == '__main__': x = 1 print x 在我使用过的其他语言中,此代码将引发异常,因为该x变量是if语句的局部变量,不应在其外部存在。但是此代码将执行并打印1。任何人都可以解释此行为吗?是否在模块中创建的所有变量都是全局的/可用于整个模块?

10
为什么在内部类中使用公共方法?
我们的一个项目中有很多代码如下所示: internal static class Extensions { public static string AddFoo(this string s) { if (s == null) { return "Foo"; } return $({s}Foo); } } 除了“以后更容易公开该类型?”以外,还有其他明确的理由吗? 我怀疑这仅在非常奇怪的情况下(在Silverlight中反射)才重要,或者根本不重要。
250 c#  scope  public  internals 

6
JavaScript中属性和方法名称的下划线前缀
JavaScript中的下划线前缀仅是约定,例如Python私有类方法中的约定吗? 从2.7 Python文档中: Python中不存在只能从对象内部访问的“私有”实例变量。但是,大多数Python代码遵循一个约定:以下划线开头的名称(例如_spam)应被视为API的非公开部分(无论是函数,方法还是数据成员) 。 这也适用于JavaScript吗? 以下面的JavaScript代码为例: function AltTabPopup() { this._init(); } AltTabPopup.prototype = { _init : function() { ... } } 另外,使用带下划线的前缀变量。 ... this._currentApp = 0; this._currentWindow = -1; this._thumbnailTimeoutId = 0; this._motionTimeoutId = 0; ... 只有约定?还是在下划线前缀后面? 我承认我的问题与这个问题非常相似,但是对于JavaScript中的下划线前缀的重要性,它并没有使人更聪明。


9
是否可以在MATLAB中为每个文件定义一个以上的函数,然后从该文件外部访问它们?
在我攻读EE的本科学位时,MATLAB要求每个函数都必须在自己的文件中定义,即使它是单行的也是如此。 我现在正在攻读研究生学位,所以我必须在MATLAB中编写一个项目。仍然需要更新版本的MATLAB吗? 如果可以在一个文件中放置多个功能,是否对此有任何限制?例如,可以从文件外部访问文件中的所有功能,还是仅从名称相同的功能访问文件? 注意:我正在使用MATLAB版本R2007b。

5
如何将此上下文传递给函数?
我以为这是我可以轻松搜索的东西,但是也许我没有问正确的问题... 如何在给定的javascript函数中设置“ this”所指的内容? 例如,与大多数jQuery函数一样,例如: $(selector).each(function() { //$(this) gives me access to whatever selector we're on }); 如何编写/调用自己的独立函数,并在调用时具有适当的“ this”引用?我使用jQuery,因此,如果有jQuery特定的方式可以做到,那将是理想的选择。
213 javascript  jquery  scope  this 

12
首次使用后重新分配时,局部变量上出现UnboundLocalError
以下代码可在Python 2.5和3.0中正常工作: a, b, c = (1, 2, 3) print(a, b, c) def test(): print(a) print(b) print(c) # (A) #c+=1 # (B) test() 但是,当我取消注释(B)行时,我UnboundLocalError: 'c' not assigned在(A)行得到了注释。的值a和b被正确地打印。这使我完全困惑,原因有两个: 为什么由于行(B)的后面的语句而在行(A)抛出运行时错误? 为什么在按预期方式打印变量a并产生错误?bc 我能提出的唯一解释是,局部变量c是由赋值创建的c+=1,它c甚至在创建局部变量之前就优先于“全局”变量。当然,在变量存在之前“窃取”范围是没有意义的。 有人可以解释这种现象吗?
208 python  variables  scope 


3
每个循环访问Handlebars.js范围之外的变量
我有一个handlebars.js模板,如下所示: {{externalValue}} <select name="test"> {{#each myCollection}} <option value="{{id}}">{{title}} {{externalValue}}</option> {{/each}} </select> 这是生成的输出: myExternalValue <select name="test"> <option value="1">First element </option> <option value="2">Second element </option> <option value="3">Third element </option> </select> 如预期的那样,我可以访问的每个元素的id和title字段myCollection以生成我的选择。在选择之外,我的externalValue变量已正确打印(“ myExternalValue”)。 不幸的是,在期权的文本中,externalValue价值从未被打印出来。 我的问题是:如何从循环内部访问每个handlebars.js范围之外的变量?

6
在while循环内修改的变量不被记住
在下面的程序中,如果我$foo在第一条if语句中将变量设置为值1 ,则它的工作方式是在if语句之后记住其值。但是,当我将相同的变量设置if为while语句内部的值2时,在while循环后将其忘记。就像我$foo在while循环中使用某种形式的变量副本,而我只修改该特定副本一样。这是一个完整的测试程序: #!/bin/bash set -e set -u foo=0 bar="hello" if [[ "$bar" == "hello" ]] then foo=1 echo "Setting \$foo to 1: $foo" fi echo "Variable \$foo after if statement: $foo" lines="first line\nsecond line\nthird line" echo -e $lines | while read line do if [[ "$line" == "second line" ]] …
186 bash  while-loop  scope  sh 

8
var self =这个?
使用实例方法作为事件处理程序的回调将范围this从“我的实例”更改为“无论什么叫回调”。所以我的代码看起来像这样 function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would not work here }) } 它有效,但这是最好的方法吗?我觉得很奇怪

6
Python“ for”循环的作用域
我不是在问Python的作用域规则。我大致了解作用域在Python中用于循环的原理。我的问题是为什么设计决策是以这种方式做出的。例如(无双关语): for foo in xrange(10): bar = 2 print(foo, bar) 上面将打印(9,2)。 这让我感到很奇怪:“ foo”实际上只是在控制循环,而“ bar”是在循环内部定义的。我可以理解为什么可能需要在循环外部访问“ bar”(否则,for循环的功能将非常有限)。我不明白的是为什么循环退出后,控制变量必须保留在范围内。以我的经验,它只会使全局名称空间混乱,并且使查找其他语言的解释器捕获的错误变得更加困难。
177 python  scope 


5
从类定义中的列表理解访问类变量
如何从类定义中的列表理解中访问其他类变量?以下内容在Python 2中有效,但在Python 3中失败: class Foo: x = 5 y = [x for i in range(1)] Python 3.2给出了错误: NameError: global name 'x' is not defined 尝试Foo.x也不起作用。关于如何在Python 3中执行此操作的任何想法? 一个更复杂的激励示例: from collections import namedtuple class StateDatabase: State = namedtuple('State', ['name', 'capital']) db = [State(*args) for args in [ ['Alabama', 'Montgomery'], ['Alaska', 'Juneau'], # …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.