草庐IT

Closures

全部标签

javascript - 执行一致性和性能的原型(prototype)或闭包?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。javascript中方法调用的高性能执行和执行时间一致性之间的最佳折衷是什么?我仍在学习javascript并将对大部分内容使用原型(prototype)(即BrendanEichhere),但我认为我从函数闭包中发现了更好的性能和一致性(我知道我可能过度优化了)。我一直在测试的一种原型(prototype)模式:functionPrototypeA()

javascript - 我如何解决 Javascript 闭包问题?

考虑这个JavaScript小片段:for(variinmap.maps){buttons.push($("").html(i).click(function(){alert(i);}));}它为map.maps对象(它是一个关联数组)中的每个字段创建一个按钮。我将索引设置为按钮的文本,并将其也设置为提醒索引。显然,人们会希望所有按钮在单击时都提示其自己的文本,但所有按钮在单击时都会提示map.maps对象中的final索引的文本。我假设这种行为是由JavaScript处理闭包的巧妙方式引起的,返回并从创建它们的闭包执行函数。我能想到的解决这个问题的唯一方法是将索引设置为按钮对象上的数

Javascript 在错误的时间关闭 "stores"值

我正在尝试逐渐增加。以下作品:function_award(points){varstep=1;while(points){vardiff=Math.ceil(points/10);setTimeout("_change_score_by("+diff+");"/*sigh*/,step*25);points-=diff;step++;}}但是,它使用隐式评估。邪恶的!让我们改用闭包,对吧?function_award(points){varstep=1;while(points){vardiff=Math.ceil(points/10);setTimeout(function(){_

javascript - 为什么闭包比全局变量更适合保存变量?

我了解闭包在JavaScript中的工作原理,但我的问题是为什么您要费尽心思地创建闭包来保存变量?你不能把变量设为全局变量吗?或者这会使全局范围变得困惑并使您的代码容易出错。 最佳答案 这是一个范围界定问题。全局变量就是:全局变量,对每个人。使用闭包,可以更好地控制变量的范围(可见性),这意味着可以更好地控制可能的意外副作用。http://en.wikipedia.org/wiki/Global_variable[Globals]areusuallyconsideredbadpracticepreciselybecauseofthe

javascript - 使用事件处理程序理解 javascript 闭包

我对javascript很陌生,最近在了解闭包时,我遇到了面试官提出的一个问题:-functioninitButtons(){varbody=document.body,button,i;for(i=0;i这段代码的输出是什么?为此我回答-“与按钮相对应的数字..1、2等。”好的,然后我用谷歌搜索并找到了一个答案,其中指出:-ThereasonthishappensisbecausewhentheaddEventListenermethodisinvokedduringeachiterationoftheforloopaclosureiscreated.好吧,现在一切都在我头上……这怎

javascript - 为什么我不能在 Javascript 中滚动循环?

我正在开发一个使用dojo的网页,上面有许多项目小部件(在我的测试用例中为6,但通常是可变的)。我正在调用dojo.addOnLoad(init),在我的init()函数中有这些行:dojo.connect(dijit.byId("project"+0).InputNode,"onChange",function(){makeMatch(0);});dojo.connect(dijit.byId("project"+1).InputNode,"onChange",function(){makeMatch(1);});dojo.connect(dijit.byId("project"+2

javascript - 如何在 javascript 中访问当前范围之外的变量?

我正在用javascript编写一个应用程序,无法弄清楚如何在这个jquery解析中访问我的函数中声明的变量。在内部我可以访问全局变量,但我真的不想为这些值创建全局变量。基本上,我想从simulationFiles变量中的xml文档中提取文件名。我检查节点属性是否与simName相等,并提取xml元素中的两个字符串,我认为这部分工作正常。如何提取那些xml元素并将它们附加到局部变量?functionCsvReader(simName){this.initFileName="somepath";this.eventsFileName="somepath";$(simulationFile

Javascript:将自定义参数传递给回调函数

我有这个回调函数设置:varcontextMenu=[];varcontext=[{"name":"name1","url":"url1"},{"name":name2","url:"url2"}];for(vari=0;i问题在于传递给回调的url值始终是上下文变量中的最后一个值-在本例中为“url2”。我期望将特定值传递给回调的每个“实例”,但由于回调似乎记住了相同的值,即上次引用它的时间。我有点卡住了。任何帮助将不胜感激。PS:我用的是jQueryContextMenu据我了解,它不支持将自定义数据发送到其回调函数。正是在这种情况下,我遇到了这个问题。在此环境中克服的任何建议也很

Javascript 闭包函数参数?

代码属于javascriptissexy.com我的问题是为什么调用mjName("Jackson")会返回“这个名人是迈克尔jackson”?是否总是在任何外部函数中给出的第二个参数表示js=内部函数参数?有人可以详细解释整个概念吗?functioncelebrityName(firstName){varnameIntro="Thiscelebrityis";//thisinnerfunctionhasaccesstotheouterfunction'svariables,includingtheparameterfunctionlastName(theLastName){retur

javascript - (...()) 与 javascript 闭包中的 (...)()

这个问题在这里已经有了答案:Locationofparenthesisforauto-executinganonymousJavaScriptfunctions?(4个答案)关闭7年前。我知道这很愚蠢,但这之间有任何区别:(function(){varfoo='bar';})();还有这个?(function(){varfoo='bar';}());JSLint告诉我们将调用移动到包含函数的括号中,但我认为没有必要。编辑:答案太酷了。~函数,JSHint替代方案以及jQuery对(/***/)();的偏好和Crockford的解释!我以为我只会得到一个“他们是同一回事”之类的答案。你们