草庐IT

Closures

全部标签

javascript - 如何阅读 Javascript 闭包语法?

基于DougCrockford讲座中的一些代码,我创建了这个。varisAlphaUser=(function(){alert("FormingAlphaUserList");letAlphaUsers={1234:true,5678:true};returnfunction(id){alert("CheckingAlphaUsers:",id);returnAlphaUsers[id];};}());alert("starting");alert(isAlphaUser(1234));alert(isAlphaUser(5678));alert(isAlphaUser(3456));

javascript - 自调用函数中递归函数的 setTimeout()

我想将我的代码作为一个self调用的匿名函数来分发,正如我看到的那样。此外,在我的代码中,我必须监视另一个库加载,以便我可以在它可用时使用它。(function(window,document,undefined){staffHappens();varinitMyLib=function(){if(typeof(myLib)=='undefined'){setTimeout("initMyLib()",50);}else{useMyLib();}}moreStaffHappens();initMyLib();//->initMyLibisundefined})(this,documen

javascript - 在 JavaScript 闭包中更改全局变量

我正在尝试更改闭包中变量的值:varmyVariable;$.ajax({//stuff....success:function(data){myVariable=data;}});这不起作用,因为myVariable对闭包不可见。如何更改此代码,以便myVariable的值发生变化? 最佳答案 与您的看法相反,您的代码有效。但是看到您正在尝试做的事情并从字里行间看出我猜您正在尝试这样做:varmyVariable;$.ajax({//stuff....success:function(data){myVariable=data;}

javascript - 闭包/作用域 JavaScript/jQuery

我正在尝试将一些现有的顶级函数分组到闭包(以避免污染全局命名空间)但我不太开始工作。首先,所有的JS在我的匿名函数之外工作,但是一旦我把它在匿名函数中我得到一个错误“crossfadeisnot定义”。有没有人看到任何完全明显的我是不见了?我不太明白为什么setInterval/crossfade在外面工作匿名函数但不在内部。start()里面的任何东西都应该能够在start()之外看到变量/函数,它应该都是在顶级匿名函数创建的闭包中protected?我没有尝试访问任何在crossfade()中,我只是试图执行它。(function($){//varsupherethatintern

Javascript:闭环?

我想做以下事情:for(vari=0;i问题是我总是得到i的最终值,因为Javascript的闭包不是按值的。那么我该如何使用javascript做到这一点呢? 最佳答案 如果您为使用JavaScript1.7或更高版本的浏览器编写代码,一个解决方案是使用let关键字:for(vari=0;i来自MDC文档中心:Theletkeywordcausestheitemvariabletobecreatedwithblocklevelscope,causinganewreferencetobecreatedforeachiteration

javascript - 将参数传递到 setTimeout 的闭包中

我遇到了一个问题,我的应用程序位于iframe中,并且它是从外部域调用的。当iframe正确加载时,IE9不会触发加载事件,所以我认为我无法使用setTimeout来轮询页面。无论如何,我想看看我的setTimeout完成通常需要多长时间,所以我希望能够记录setTimeout从我的回调中触发的延迟,但我不确定如何将该上下文传递给它所以我可以记录它。App.readyIE9=function(){vartimings=[1,250,500,750,1000,1500,2000,3000];for(vari=0;i我在IE9的控制台中不断收到LOG:undefined。完成此任务的正确方

javascript - 在 Javascript 中使用闭包的好例子

嗯,我最近了解了Javascript中的闭包。虽然我发现它的概念真的很棒,但我自己还没有找到适合他们的应用程序。在我找到的所有博客文章和所有教程中,我都很好地解释了它们是什么以及如何使用它们。我在任何地方都找不到的例子让我觉得:“哇!你可以用闭包来做这个?太棒了!!!”。我找到的所有例子都像这个一样纯粹是学术性的。functionsay667(){//Localvariablethatendsupwithinclosurevarnum=666;varsayAlert=function(){alert(num);}num++;returnsayAlert;}varsayNumber=sa

javascript - 良好做法 : How can I ensure a JavaScript constructor has access to mixin functions?

作为RPG游戏后端的一部分,我希望能够对Angular色应用临时效果。这些影响的性质可能有很大差异,但我想保持定义它们的方法非常简单。我将自定义事件处理用作混合:varEvtObject={};$rpg.Event.enable(EvtObject);//Addthe3methodsandsetEvtObject._events={}我想将Auras(临时效果)定义为带有事件处理代码的构造函数:varMyAura=function(any,args){this.group="classification";this.on("tick",function(){});this.on("re

javascript - 在这段代码中,为什么 foo 和 this.foo 指的是不同的东西?

代码如下:for(vari=0;i为什么i和this.i指的是不同的东西?将此与在全局范围内执行的一些代码进行对比:varx=5;console.log(x);console.log(this.x);//bothwillprint5这里的范围是全局的,上下文也是。变量声明在全局上下文中设置同名属性。另一方面,在函数范围内,这不会发生。vara=function(){varx=5;console.log(x);//5console.log(this.x);//undefinedconsole.log(i);//undefinedconsole.log(this.i);//10}.bind

javascript - Nodejs 闭包变量未在模块中更新

我需要一些帮助来理解NodeJ。我显然缺少一些基本的东西。我有一个类似于下面的模块,使用基本的揭示模块模式......varsomeArray=[];varpublicApi={someArray:someArray,someFunction:someFunction};functionsomeFunction(){someArray=['blue','green'];}module.exports=publicApi;当我使用这个模块时,当我调用someFunction时someArray没有改变...varmyModule=require('myModule');myModule.