草庐IT

javascript - 如何在 Javascript 中收集匿名对象垃圾?

如果我创建了一个对象但没有将它赋值给任何东西,Javascript什么时候会垃圾回收这个对象?这是一个例子:alert(newDate().getTime());如果不进行这样的垃圾回收,会不会造成内存泄漏?for(vari=0;i 最佳答案 如果作用域内没有人引用匿名对象,则下次GC运行时将对它们进行垃圾回收。因此,在Console.info完成运行后,它们就可以进行垃圾收集了。如果您设置任何范围内的变量来引用它们,那么它们就不会。 关于javascript-如何在Javascript

javascript - 为什么匿名函数本身是 javascript 中的语法错误?

如果我尝试执行一个只有一个源代码行是一个对象的脚本:{prop:'value'}它解析良好(在V8和UglifyJS中)。同样,我可以将字符串或数字作为源代码单独放置,并且不会报告任何语法错误。但是,V8和UglifyJS都提示自己:function(){}我收到UncaughtSyntaxError:Unexpectedtoken(.为什么第一个示例中的对象正常时会中断?javascript中的函数不只是对象吗?我意识到声明一个匿名函数而不执行它不会有任何作用;那不是问题。我想知道为什么会导致解析错误。 最佳答案 来自ECMASc

javascript - 将 window 和 undefined 传递给立即调用的匿名函数。为什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:whydoweneedtopassinwindowandundefinedintothisjqueryplugin?我看过jQuery源代码是这样做的:(function(window,undefined){...}(window))我明白为什么包含undefined是有用的,如果有人以前在哪里更改“undefined”。但是窗口不能改变。据我所知,它甚至不需要使用,对吧?这有什么用?

javascript - 使用需要参数的非匿名函数的 setInterval 必须在匿名函数内。为什么?

好的,我已经在这里和其他地方查看了几篇关于jquery/javascript中的setInterval的帖子,关于答案的烦人之处在于我没有了解解决方案为何有效。请考虑:使用匿名函数,我们可以设置警报以重复输出“兔子”:setInterval(function(){alert("bunnies")},3000);但是如果我们想使用一个非匿名函数我们必须编码setInterval(hop,3000);其中函数:functionhop(){alert("bunnies");}如果我们尝试编码:setInterval(hop(),3000);hop只执行一次。我不明白这是为什么。我已经阅读了关

javascript - 是否可以在 for 循环中引用匿名数组?

for(varnamein['dog','cat','cow']){alert(name);}这里的name返回数组的索引,但我不能引用它,因为它是匿名的。我知道我可以在循环外声明它,但在这里我想问一下是否有一种方法可以直接引用没有索引的名称。 最佳答案 ...不。没有,至少没有本地循环。但是,有ES5的forEach:['dog','cat','cow'].forEach(function(value,key){//dostuff});实际上是一样的。支持mostlyeverywhere,除了在旧的IE中:类似es5-shim的东

javascript - 这段带有匿名闭包的 React 代码对 validateFormat 做了什么?

我正在查看React16.4.2的源代码并注意到一些我有点不熟悉的东西并且想知道它是如何工作的。这是代码:varvalidateFormat=functionvalidateFormat(format){};{validateFormat=functionvalidateFormat(format){if(format===undefined){thrownewError('invariantrequiresanerrormessageargument');}};}如您所见,声明了一个名为validaeFormat的变量,并为其分配了一个函数作为其值。这对我来说很有意义。但是,在这一行

javascript - 覆盖 google.com 匿名函数的一部分

如果一个javascript函数是匿名声明的,有没有办法覆盖它或它的一部分?我正试图阻止google.com的即时搜索劫持向上和向下箭头键来移动您的搜索排名。我已经确定了我认为是有问题的代码部分。键码38和40用于向下键和向上键。if(b==40)aa(f);elseif(b==38)aa(j);elseif(b==37||b==39)if(!ca(b==39))returnf;a.preventDefault&&a.preventDefault();returna.returnValue=j问题在于,这是名为Sb=function(a){}的函数的一部分,该函数位于大约三千行匿名函数

javascript - 这些自执行匿名函数(又名 IIFE)实现之间有什么区别

在许多书中/blogposts自调用匿名函数模式是这样写的:(function(){varfoo='bar';})();但是运行JSLint对此给出了这个错误:Movetheinvocationintotheparensthatcontainthefunction.例如把它改成这个作品:(function(){varfoo='bar';}());问题为什么第一个实现对JSLint来说不够好?有什么区别?首选的形式是什么?JSLint总是正确的吗?它为什么有效?毕竟function(){}()抛出一个SyntaxError:Unexpectedtoken(但是用parens包裹它会突然起

javascript - 为什么 TypeScript 将类包装在匿名函数中?

这个问题在这里已经有了答案:Howtodoclassimplementation?(1个回答)关闭7年前。例如,我们有一个Dog类:classDog{staticfood;privatestaticstatic_var=123;constructor(privatename){}speak(){console.log(this.name+',Ieat'+Dog.food+','+Dog.static_var);}}编译为JS:varDog=(function(){functionDog(name){this.name=name;}Dog.prototype.speak=function

javascript - 为什么在 Javascript 模块模式中使用自执行匿名函数?

在JavaScript的模块模式中,“立即调用的函数表达式”(也称为自执行匿名函数)用作返回对象的自执行函数。自执行函数如何隐藏私有(private)变量,只暴露返回的对象。为什么普通的JavaScript函数不会发生这种情况?那么在下面的迷你模块中,为什么没有封闭的()()就不能实现同样的封装概念呢?varModule=(function(){varprivateVariable="foo",privateMethod=function(){alert('privatemethod');};return{PublicMethod:function(){alert(privateVar