jjzjj

javascript - 使用命名立即调用函数表达式 (IIFE) 而不是注释

在JS代码中使用命名IIFE来描述和分组相关代码的优缺点是什么?我一直在使用这种“模式”为我的更多过程代码提供结构,这些代码只在一个地方执行。例子(functionhideStuffOnInstantiaton(){$('oneThing').hide().removeClass();$('#somethign_else').slideUp();$('.foo').fadeOut();}());我发现这比两者更可取://hideStuffonInstantiaton$('oneThing').hide().removeClass();$('#somethign_else').slide

javascript - IIFE 前的分号有什么用?

这个问题在这里已经有了答案:WhatdoestheleadingsemicoloninJavaScriptlibrariesdo?(6个答案)关闭9年前。我正在检查has.js的代码并对这里的初始分号感到困惑:;(function(g){//code}()(this);据我所知,它什么都不做。它不会将函数放在表达式位置,如()或!做:(function(){}())或!function(){}()。它似乎只是一个空行的换行符。这个分号的作用是什么?强制症渴望在IIFE的开始和结束之间保持对称?:)

javascript - 立即函数 JavaScript

StoyanStefanov在JavasScriptPatterns中说:“您需要一个立即函数来将所有代码包装在其本地范围内,而不是将任何变量泄漏到全局范围内”,第70页。这是他的例子(function(){vardays=['Sun','Mon'];//...//...alert(msg);}());但肯定是因为days被定义为var,所以它只是函数范围?立即函数的唯一好处是函数被立即调用。没有范围优势。正确吗? 最佳答案 这不是关于立即执行的函数与常规函数的对比;事实上,它几乎没有关系。立即调用包装函数的唯一目的是限定包装函数局

javascript - 为什么记录命名的 IIFE 而不是同名变量?

我看到下面有人发布的代码。我对它记录的内容感到困惑。它记录函数a,而不是200。为什么?vara=1;(functiona(){a=200;console.log(a)})() 最佳答案 因为被立即调用的函数是命名的,并且该名称不能被重新分配以直接在IIFE中引用其他东西。任何命名的函数表达式也会表现出这种行为。函数名为a的函数表达式意味着直接位于函数内部的a将始终引用函数本身,即使您尝试重新分配它也是如此。如果你使用严格模式,你可以将错误显式化:'usestrict';vara=1;(functiona(){a=200;conso

javascript - 构建一个 JavaScript 库,为什么要这样使用 IIFE?

我注意到很多图书馆都使用下面的这种风格来定义他们的图书馆。我还注意到第一个自调用函数与Require.js或AMD系统有关,它们总是将工厂作为参数,我将更多地研究Require.js,一直研究Browserify。为什么主要代码被传递到括号内的第一个自调用函数的末尾,这是一个闭包,还是只是被认为是一个匿名函数,我将深入研究两者。这有什么好处?看起来作者在闭包内部传递了一个string、this和一个callback。这是否会为我的库提供一种干净安全的方式来全局化下面这个示例中的主要对象Please?(function(globalName,root,factory){if(typeof

javascript - 将参数传递给 IIFE

将参数传递给存储在变量中的IIFE的正确语法是什么?下面的例子告诉我foo没有定义,无论我是否调用函数:varbar=(function(foo){return{getFoo:function(){returnfoo;}}})(foo);console.log(bar.getFoo(1));http://jsfiddle.net/eSTkL/ 最佳答案 IIFE立即被调用。您在调用时将foo传递给它,我想它是未定义的。bar中存储的不是IIFE,而是IIFE返回的对象,它与foo没有任何关系(除了通过闭包访问它之外)。如果您希望fo

javascript - 立即调用函数表达式 (IIFE) 相对于普通函数的优势

我是javascript的新手,我读过关于themodulepattern的文章提供某种namespace并同时具有私有(private)和公共(public)成员,例如:varmodule=(function(){vars="Hello,i'mprivateandinclosure!";return{myString:s,myFunc:function(){alert(s);}};})();我确实看到了它的好处,因为它为您提供了面向对象编程的一些优势。但是我见过很多没有分配给变量的IIFE示例。与您调用的普通函数相比,这(据我所知)没有任何优势:1。国际金融学院(function()

javascript - 为什么 TypeScript 会在 IIFE 中打包一个类?

这是一个TypeScript类:classGreeter{publicstaticwhat():string{return"Greater";}publicsubject:string;constructor(subject:string){this.subject=subject;}publicgreet():string{return"Hello,"+this.subject;}}当TS以ES5为目标时,它被转译为IIFE:varGreeter=/**@class*/(function(){functionGreeter(subject){this.subject=subject;

javascript - 创建一个 JS 类 : IIFE vs return prototype

让我们看两个例子,我将在其中尝试解释我想理解的内容。varCar=function(){//InitclassfunctionCar(){};//Privatefunc/varsvarprivate={color:'red'};//Publicfunc/varsCar.prototype={newColor:function(color){private.color=color},getColor:function(){returnprivate.color}};returnCar.prototype;//returnwithprototype};varmyCar=newCar();和

Java等价于iif函数

问题很简单,在java中有一个功能等同于著名的iif吗?例如:IIf(vData="S",True,False)提前致谢。 最佳答案 vData.equals("S")?true:false或者在这种特殊情况下显然可以写vData.equals("S") 关于Java等价于iif函数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4684976/