我编写了这段代码:window.setInterval(function(){vara=doStuff();varb=a+5;},60000)匿名函数的实际内容当然只是为了这个小例子,无关紧要。真正发生的是在函数本身的范围内创建了一堆变量,因为我不需要/不想污染全局空间。但是众所周知,doStuff()函数要到页面中的60秒才会被调用。我还想在页面加载后立即调用该函数,并且从那时起每60秒调用一次。是否可以在不将内部代码复制/粘贴到setInterval()行之后的情况下以某种方式调用该函数?正如我所说,我不想用函数外部不需要的无用变量污染全局空间。 最佳答
出于某种原因,事件监听器在将参数传递给匿名函数时会为每个元素触发两次。即,元素el上的点击事件将注册一次,因此触发一次。el.addEventListener("click",handle,false);el.addEventListener("click",handle,false);但如果我想将自己的参数传递给它,它会注册并触发两次。el.addEventListener("click",function(){handle(event,myArgument);},false);el.addEventListener("click",function(){handle(event,m
有关完整故事,请查看myotherquestion.基本上,我曾问过在以下代码的套接字处理程序中使用命名函数是否更有效:varapp=require('express').createServer()vario=require('socket.io').listen(app);app.listen(8080);//Someunrelatedstuffio.sockets.on('connection',function(socket){socket.on('action1',function(data){//logicforaction1});socket.on('action2',f
我几乎所有的JS文件都包含在匿名函数中。如果我在匿名函数之外包含"usestrict";,严格模式是否仍适用于匿名函数?例如,严格模式是否应用于下面脚本中的匿名函数的内部主体:"usestrict";(function(){//Isthiscoderunningunderstrictmode?})(); 最佳答案 根据JohnResig'sarticle,如果你在文件的顶部打开严格模式,它适用于整个文件/脚本。所以是的,这意味着它将在匿名函数中应用。您也可以将它添加到一个函数中,在这种情况下它仅适用于该特定函数。编辑添加:这里是th
我知道.on()与jQuery一起存在并且.bind()不应该在未来使用,考虑到我有jQuery版本大于或等于1.7。我想知道的是:使用.bind()将匿名函数或命名函数附加到事件处理程序之间有什么区别吗?示例://Anonymousfunction$(".warning").bind("click",function(){alert("Hello");});//Namedfunction$(".warning").bind("click",foo);functionfoo(){alert("Hello");}假设我的页面中有100个div类warning。函数.bind()会将一个新
这个问题在这里已经有了答案:Javascriptnewobject(function)vsinlineinvocation(3个答案)关闭6年前。我正在阅读KnockoutJS源代码。我遇到了以下我不确定我是否理解的行......ko.utils=new(function(){一般来说,结构似乎是这样的:ko.utils=new(function(){//somevariablesdeclaredwithvarreturn{export:value,export:value};})();我不明白这个结构,为什么需要new?它有什么作用?它有什么用?(我认为,如果一个函数在其名称之前使用
我正在分析来自JohnResig网站的以下两个url,但我不明白为匿名函数命名会产生怎样的影响。我的理解是,给匿名函数的名称只能在函数定义内部使用,不能在函数定义之外使用,但是在下面的链接中它产生了巨大的差异http://ejohn.org/apps/learn/#13http://ejohn.org/apps/learn/#14任何解释或引用都会有很大帮助。我仍然对#14中的以下几行感到困惑varsamurai={yell:ninja.yell};varninja={};assert(samurai.yell(4)=="hiyaaaa","Themethodcorrectlycall
例如我有这个:exports.getsertHexId=function(table,hex){Webstorm8的自动缩进在关键字function和左括号(之间创建空间。它的设置空间选项包括:函数声明括号函数调用括号'如果'括号>。..很困惑,因为我认为这应该包含在函数声明括号中。可以正确配置吗?是错误吗? 最佳答案 进一步向下滚动,它是“在函数表达式中”选项。因为function(){...}是一个返回值的表达式,该值是一个函数。 关于javascript-Webstorm关闭匿名函
在Mac上,Firebug在分析器模式下输出正确的函数名称。在PC上,几乎所有功能都记录为“匿名”。在这个例子中,几乎所有的函数调用都是原型(prototype)方法。有没有办法在PC版本上获取功能名称?设置?区别就在这里。你可以看出为什么PC版本远不如它。这是分析完全相同的代码!(运行FF9,最新稳定的Firebug) 最佳答案 如果没有别的办法,你总是可以命名这个函数:varfunctionVariable=functionnameVisibleToDebugger(parameters){...}
正如我多次看到的那样,一个自执行的匿名函数用于包含整个库。如何测试这些库,例如QUnit无法访问匿名函数包装器内的任何内容? 最佳答案 我同意你不想执行BackdoorManipulation通过寻找偷偷摸摸的方法来离散地测试私有(private)方法。但是,正如您所指出的,无数的Web应用程序被编写成一个巨大的自执行泥球,缺乏任何命名或公共(public)API。这是一个完全不同的问题,在许多其他技术堆栈中不太可能遇到。TDD为网络编写JavaScript的巨大值(value)之一是它迫使您编写至少可供两方使用的JavaScrip