jjzjj

javascript - 在 IIFE 上使用 .call(this)

我见过用.call(this)包裹的IIFE,而不仅仅是()。为什么要这样做?上下文:https://github.com/dmauro/Keypress/blob/development/keypress.js(据我了解,this将引用window对象-无论如何都会调用IIFE。这似乎是多余的。) 最佳答案 如果不使用call调用IIFE,它里面的this会引用全局对象window(或者undefined在严格模式下)。使用.call(this)将传递给它任何this在调用时引用的内容(无论当前上下文是什么)。例如,您想使用.ca

javascript - 如何简洁地赋值并立即调用一个函数变量?

下面是一个在闭包中定义匿名函数的方法,调用该函数,然后忘记它:(function(){"dostuff";})();这用于在不增加脚本体积的情况下保持有限的范围(IIFE:立即调用的函数表达式)。如果您希望立即执行一个函数,同时仍保留该函数供将来使用,该怎么办,如下所示:vardoThing;(doThing=function(){"dostuff";})();这在我测试过的浏览器(Chrome、FF、IE8、IE10)中有效,但这没有通过JSLint(错误调用)。这样做有任何兼容性问题吗?有没有JSLint看好的方法来完成这个? 最佳答案

javascript - ECMAScript/Javascript 6 中的类是否需要 IIFE?

如果我有ClassCar{}我需要用我们的函数闭包来包装它吗?var会被提升到窗口吗?还是只是去上课?转译时呢?Traceur/babel会把它变成IIFE并让我们变成var吗?我需要:(function(){ClassCar(){}}());为了安全? 最佳答案 不需要像此处所示的类car的IIFE包装器,事实上,这将创建一个执行上下文并从页面的其余部分隐藏该类。所以你只需将其保留为(不是小写)classCar(){}Var仍然以与之前相同的方式被提升。它将被提升到执行上下文的顶部。如果代码当前位于窗口的上下文中,那么var将在此

javascript - 我应该使用 IIFE 还是 window onload 来初始化?

以下两个代码片段都有效:在js文件中使用IIFE:(functioninitialize(){txtInput=document.getElementById('txtInput');txtResult=document.getElementById('txtResult');txtInput.value="0";txtResult.value="0";}());在html文件中的窗口加载事件上调用initialize():window.addEventListener('load',initialize,false);是一种比另一种更好的方法吗?在性能方面还是其他方面?就目前而言,我

javascript - 模块模式中的函数声明与函数表达式

我刚刚了解了函数声明和函数表达式之间的区别。这让我想知道我是否在我的AngularJS代码中做正确的事情。我正在遵循JohnPapa使用的模式,但现在它似乎与模块模式的典型JS方法不一致。JohnPapa在他的Controller和服务中大量使用嵌套函数声明。这不好吗?是否有任何理由支持这一点:varfoo=(function(){varbar=function(){/*dostuff*/};return{bar:bar};}());foo.bar();关于这个:varfoo=(function(){return{bar:bar};functionbar(){/*dostuff*/};

javascript - IIFE inside $(document).ready 或相反

我的同事一直在他的代码中广泛使用IIFEinside(document).ready。现在,我已经阅读了这篇文章:JQuerybestpractise,using$(document).readyinsideanIIFE?这让我开始思考我们是应该在IIFE中使用$(document).ready还是像我的同事那样反过来也行。基本上,他的代码是这样设置的:jQuery(function(){(function($){//...//Codehere//...})(jQuery);});他做的事情总体上还好吗? 最佳答案 有些人可能会争辩

javascript - JavaScript 模块化方法中 IIFE 和非 IIFE 的区别

最近,当我试图了解更多有关JavaScript中的IIFE和模块的信息时我想到了一个问题,即IIFE如何在不立即制作模块的情况下制作模块调用该函数不会使其成为一个模块..任何人都可以与我分享这段代码之间的区别varMODULE=(function(){varmy={},privateVariable=1;functionprivateMethod(){//...}my.moduleProperty=1;my.moduleMethod=function(){//...};returnmy;}());并且此代码中的函数未立即调用..varMODULE=function(){varmy={}

javascript - IIFE 中的变量提升(惰性解析)

在以下情况下我得到了一个非常奇怪的输出:functiontest(){vartest=123;console.log(test)}//thisoutput:123(functiontest(){vartest=123;console.log(test)})()//thisoutput:123但是当使用下面的代码时(functiontest(){test=123;console.log(test)})()//output:functiontest(){test=123;console.log(test)}谁能解释一下。 最佳答案 您看

javascript - 编写 IIFE 有哪些不同的方式?他们的用例是什么?

我已经开始阅读this书。第2章介绍了编写IIFE的不同方法:!function(){}()~function(){}()+function(){}()-function(){}()newfunction(){}1,function(){}()1&&function(){}()vari=function(){}()作者说:Eachmanifestationhasitsownuniquequalitiesandadvantages—somewithfewerbytes,somesaferforconcatenation,eachvalidandeachexecutable.我是JS的新手

javascript - JavaScript 中的立即调用函数表达式 (IIFE) - 传递 jQuery

我有以下代码,我知道它是一个IIFE。但是,我一直无法理解(jQuery)和($)是什么。我知道这与将jQuery的引用传递到IIFE中有关,但是有人可以清楚地向我解释它们的目的吗?感谢您的帮助和时间:-)(function($){//code})(jQuery); 最佳答案 $是函数的参数。jQuery是调用函数时作为参数传递的内容。可以这样想:functioninit($){//codecanuse$hereasashortcutforjQuery//evenif$hasadifferentdefinitiongloballyo