草庐IT

Closures

全部标签

javascript - 谷歌地图故障 : Closures & Passing By Reference

我遇到了一些Googlemap/Javascript问题。我想我知道问题出在哪里,但就是不知道解决办法。我的问题的一个例子是here.无论您点击什么标记,第二个都会出现。我显然将错误的信息传递到我的事件监听器中,但我似乎无法获得正确的代码。这是代码的一部分:首先,这是我的部分代码:if(GBrowserIsCompatible()&&mapResults!=null){//ReadintheJSONvarmapDetailsArray=loadJSON();//Createamapvarmap=newgoogle.maps.Map2(document.getElementById(el

javascript - 函数计数调用

我是JavaScript的初学者,所以请耐心等待=)我正在尝试编写一个函数来计算它被调用的次数。到目前为止,我所拥有的是一个带有显式递增计数器的函数:varincrement=function(){vari=0;this.inc=function(){i+=1;};this.get=function(){returni;};};varob=newincrement();ob.inc();ob.inc();alert(ob.get());但我想知道如何只调用ob();,这样该函数就可以自动增加对自身的调用。这可能吗?如果可能,怎么做? 最佳答案

javascript - 有人可以向我解释这个 JavaScript 函数的流程吗? (关闭概念)

我正在阅读“EloquentJavaScript”。第3章介绍了“Closure”的概念并给出了几个例子。其中之一是下一个:functionmultiplier(factor){returnfunction(number){returnnumber*factor;};}vartwice=multiplier(2);console.log(twice(5));//→10我想我理解了这个概念。如果我首先执行console.log(twice),由于变量number未定义,我得到的是[Function]。我不明白的是twice(5)是如何工作的。为什么局部变量number被初始化为值5?此外

javascript - 如何在 javascript 事件处理程序中获取对象?

我试图在onclick事件处理函数中获取一个对象。但它没有按我预期的方式工作。例如,如果我运行这段代码:varentries=[{id:1},{id:2},{id:3}];for(vari=0;i我期望的是:this.id:1entry.id:1this.id:2entry.id:2this.id:3entry.id:3但我得到的是:this.id:1entry.id:3this.id:2entry.id:3this.id:3entry.id:3为什么entry对象总是id为3的entry?如何在点击事件处理程序中获取正确的入口对象? 最佳答案

javascript - 函数返回是否需要被称为闭包

嘿,我在youtube上看到了这个视频http://www.youtube.com/watch?v=KRm-h6vcpxs基本上解释了IIFE和闭包。但我不明白的是我是否需要返回一个函数才能将其称为闭包。例如functiona(){vari=10;functionb(){alert(i);}}在这种情况下,我可以将其称为闭包,因为它正在从外部函数的范围访问“i”变量,还是我需要像这样返回函数returnfunctionb(){alert(i);} 最佳答案 闭包只是一个函数,它保持着它的词法环境,直到它自己死了才让它离开。将闭包想象

javascript - 处理javascript中的循环,只有最后一项受到影响?

这个问题在这里已经有了答案:JavaScriptclosureinsideloops–simplepracticalexample(44个答案)关闭8年前。我正在使用处理图像处理的gmnpm模块。我有这段代码。for(i=0;i此循环旨在遍历图像数组并裁剪每张照片,但它只裁剪最后一张。我认为它可以执行函数调用和回调,但还没有达到那个级别。

javascript - 将父作用域中的变量传递给回调函数

这更像是一个JavaScript闭包问题,而不是一个Firebase问题。在以下代码中,Firebase回调无法识别父作用域中的变量myArr。functionshow_fb(){varmyArr=[];varfirebase=newFirebase('https://scorching-fire-6816.firebaseio.com/');firebase.on('child_added',function(snapshot){varnewPost=snapshot.val();myArr.push(newPost.user);console.log(myArr);//works}

javascript - 闭包中如何引用局部变量?

这个问题在这里已经有了答案:JavaScriptclosureinsideloops–simplepracticalexample(44个答案)关闭8年前。我正在阅读一篇文章(JavaScriptClosuresforDummies),其中一个示例如下。functionbuildList(list){varresult=[];for(vari=0;i当调用testList时,一个警告框显示“item3undefined”。文章有这样的解释:Whentheanonymousfunctionsarecalledonthelinefnlist[j]();theyallusethesamesi

闭包 : help me understand 的 JavaScript 作用域

运行以下代码:for(vari=0;i输出“3”三次。它输出i的最终值,而不是创建内部函数时i的值。如果我希望输出为1、2和3,我将如何编写这段代码?我怎样才能让它在定义函数时使用i的值而不是它的最终值? 最佳答案 for(vari=0;i因此,在setTimeout时间(在我们为setTimeout定义函数的时间),我们调用匿名函数获取val作为参数。这会为每个函数调用创建一个闭包,将val的值存储在我们刚刚调用的函数范围内。我用了self-invokingfunction,它立即创建一个closure.在您提供的代码中,代码创建

javascript - 将带有javascript闭包的参数附加到匿名函数中的默认参数

我想在GooglegeocoderAPI调用中添加一些额外的参数,因为我在循环中运行它,但我不确定如何将闭包参数附加到已经具有由调用API。例如:for(vari=0;i我希望能够在传递的geocoder.geocode()匿名函数中使用i的值,但是如果我有一个闭包使用}(i));例如在第4行这将替换会破坏地理编码器的第一个参数。有没有办法可以使用闭包,或者将i的值传递给匿名函数?实际上我想做的是:geocoder.geocode({'address':address},function(results,status,i){alert(i);//0,1,2,3,4}(i));但工作:-