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 - 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 - 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

javascript - ES6 类文字中的 IIFE

在ES5中我们都可以这样做:myClass.prototype.myMethod=(function(){returnfunction(){}})();我能用ES6类文字做同样的事情吗? 最佳答案 不,至少现在还没有。ES6类仅支持声明方法,因此任何不直接是方法的东西(包括间接评估为方法的东西,例如IIFE)仍必须使用原型(prototype)声明。但是,ES6类实际上与ES5构造函数一样工作,只是语法更简洁,所以您仍然可以这样做:classMyClass{constructor(){/*initialize*/}regularMe

javascript - IIFE 和窗口对象?

IIFE需要访问未覆盖的window对象-可以看作:类似于(jQuery示例):$(function(global){//dosomethingwithglobal})(window);但有时我也会看到这个(underscore.js):(function(){varglobal=this;//dosomethingwithglobal}).call(this);问题1:有什么不同吗?如果是这样,我应该什么时候使用它们?问题2:IIFE中的this是window。为什么需要“发送”window/call(this)?(jQuery没有使用严格模式恕我直言)注意看起来jQuery(从1.