Questions tagged «scope»

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

30
JavaScript闭包如何工作?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 Наэтотвопросестьответына 堆栈溢出нарусском:Какработаютзамыканияв的JavaScript 您将如何向了解了闭包本身的概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例,但是不幸的是它没有帮助。


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



4
C#在foreach中重用变量是否有原因?
在C#中使用lambda表达式或匿名方法时,我们必须警惕对修改后的闭包陷阱的访问。例如: foreach (var s in strings) { query = query.Where(i => i.Prop == s); // access to modified closure ... } 由于修改了闭包,因此上述代码将导致Where查询中的所有子句都基于的最终值s。 正如解释在这里,这是因为该s变量在声明foreach环以上的编译器编译如下: string s; while (enumerator.MoveNext()) { s = enumerator.Current; ... } 而不是像这样: while (enumerator.MoveNext()) { string s; s = enumerator.Current; ... } 如此处所指出的,在循环外声明变量没有任何性能优势,在正常情况下,我能想到的唯一原因是如果您打算在循环范围外使用变量: string s; while (enumerator.MoveNext()) { …

17
如何访问.then()链中的先前的诺言结果?
我已经将我的代码重组为promises,并构建了一个美好的长而平坦的promise链,其中包括多个.then()回调。最后,我想返回一些复合值,并且需要访问多个中间promise结果。但是,序列中间的分辨率值不在上一个回调的范围内,如何访问它们? function getExample() { return promiseA(…).then(function(resultA) { // Some processing return promiseB(…); }).then(function(resultB) { // More processing return // How do I gain access to resultA here? }); }


12
JavaScript闭包与匿名函数
我的一个朋友和我目前正在讨论什么是JS中的闭包,什么不是。我们只想确保我们正确理解它。 让我们来看这个例子。我们有一个计数循环,并希望延迟在控制台上打印计数器变量。因此,我们使用setTimeout和闭包捕获计数器变量的值,以确保其不会打印N倍于值N的值。 没有闭包或接近闭包的错误解决方案是: for(var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 1000); } 当然,它将i在循环后打印10倍的值,即10。 因此,他的尝试是: for(var i = 0; i < 10; i++) { (function(){ var i2 = i; setTimeout(function(){ console.log(i2); }, 1000) })(); } 按预期打印0到9。 我告诉他,他并没有使用闭包捕获i,但他坚持认为自己是。我通过将for循环体放在另一个循环中(将他的匿名函数传递给),再次打印10次10 证明了他没有使用闭包。如果我将他的函数存储在a中并在循环后执行它,也打印10次10​​,则同样适用。所以我的观点是他并没有真正捕获的值,因此他的版本不是闭包的。setTimeoutsetTimeoutvari 我的尝试是: for(var i = 0; i < …

12
在JavaScript函数中定义全局变量
是否可以在JavaScript函数中定义全局变量? 我想在其他函数中使用trailimage变量(在makeObj函数中声明)。 <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <script type="text/javascript"> var offsetfrommouse = [10, -20]; var displayduration = 0; var obj_selected = 0; function makeObj(address) { **var trailimage = [address, 50, 50];** document.write('<img id="trailimageid" src="' + trailimage[0] + '" border="0" style=" position: absolute; visibility:visible; left: 0px; top: 0px; width: ' …

19
在AngularJS中的控制器之间进行通信的正确方法是什么?
控制器之间进行通讯的正确方法是什么? 我目前正在使用涉及到的可怕软糖window: function StockSubgroupCtrl($scope, $http) { $scope.subgroups = []; $scope.handleSubgroupsLoaded = function(data, status) { $scope.subgroups = data; } $scope.fetch = function(prod_grp) { $http.get('/api/stock/groups/' + prod_grp + '/subgroups/').success($scope.handleSubgroupsLoaded); } window.fetchStockSubgroups = $scope.fetch; } function StockGroupCtrl($scope, $http) { ... $scope.select = function(prod_grp) { $scope.selectedGroup = prod_grp; window.fetchStockSubgroups(prod_grp); } }
473 scope  angularjs 

8
范围规则的简短描述?
Python范围规则到底是什么? 如果我有一些代码: code1 class Foo: code2 def spam..... code3 for code4..: code5 x() 在哪里x找到?一些可能的选择包括以下列表: 在随附的源文件中 在类命名空间中 在函数定义中 在for循环中,索引变量 在for循环内 当函数spam传递到其他地方时,执行期间还会有上下文。也许lambda函数传递的方式有所不同? 某个地方必须有一个简单的参考或算法。对于中级Python程序员而言,这是一个令人困惑的世界。


10
JavaScript惯用语的基础是什么:var self = this?
我在WebKit HTML 5 SQL Storage Notes Demo的源代码中看到了以下内容: function Note() { var self = this; var note = document.createElement('div'); note.className = 'note'; note.addEventListener('mousedown', function(e) { return self.onMouseDown(e) }, false); note.addEventListener('click', function() { return self.onNoteClick() }, false); this.note = note; // ... } 笔者采用自我在一些地方(函数体)及本在其他地方(的函数方法的参数列表中定义的机构)。这是怎么回事?既然我已经注意到它了,我是否会开始到处看到它?

7
为什么“导出默认常量”无效?
我看到以下情况很好: const Tab = connect( mapState, mapDispatch )( Tabs ); export default Tab; 但是,这是不正确的: export default const Tab = connect( mapState, mapDispatch )( Tabs ); 但这很好: export default Tab = connect( mapState, mapDispatch )( Tabs ); 请解释一下为什么 const无效export default吗?它是一个不必要的加法,并且export default被假定为const诸如此类的任何东西吗?

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.