草庐IT

iif-function

全部标签

javascript - "new <function>"后面的括号可选吗?

这个问题在这里已经有了答案:Canweomitparentheseswhencreatinganobjectusingthe"new"operator?(6个答案)关闭6年前。我在Chrome控制台中运行了以下一对代码片段,结果相同:test=newfunction(){vara=1;varb=2;varc=3;this.debugBase=function(){console.log(''+a+b+c)};};testdebugBase:function(){console.log(''+a+b+c)}__proto__:Object对比:test2=new(function(){v

javascript - jQuery 延迟 : use to delay return of function until async call within function complete + get return value

如何正确使用jQuerydeferreds来延迟函数的返回,直到函数内的异步调用完成+获取返回值?这是我当前的代码:functiongetFields(page){vardff=$.Deferred();result={};$.ajax(//theasynccall{url:page,success:function(data){//workoutvaluesforfield1&field2fromdatahereresult={'field1':field1,'field2':field2};},complete:function(){dff.resolve(result);//my

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 - 为什么有些js文件以(function() {

很简单,为什么有些js文件(例如Ember或JQuery.js)以(function(){...})();开头? 最佳答案 (function(){/*codehere*/})()形式的代码被称为“立即调用的函数表达式”。它经常用于设置闭包,因此您可以在不污染全局范围的情况下定义变量。由于这个原因,您可以在Ember、jQuery和几乎所有其他“插件”中找到它。污染全局范围通常不是一个好主意,但是对于必须在所有站点上工作的插件,确保它不会意外覆盖站点创建者正在使用的变量尤为重要。当然还有其他用途。例如,它可用于“锚定”一个迭代变量,

javascript - (function(){/*.....*/})(); 和有什么区别?和(函数($){/*.....*/})(jQuery);

有区别吗:(function(){/*..........*/})();和:(function($){/*..........*/})(jQuery); 最佳答案 其他人解释了区别是什么,但没有解释为什么您使用后者。$变量最常被jQuery使用。如果您有一个加载jQuery的脚本标记和另一个加载您的代码的脚本标记,那就完全没问题了。现在将prototype.js加入其中。如果你加载prototype.js然后加载jQuery,$仍然是jQuery。反过来做,现在$是prototype.js。如果您尝试在这样的页面上使用$,您可能会遇

javascript - 这样做的目的是什么? (function ($) {//这里是函数代码 })(jQuery);

我正在调试别人的JavaScript代码,大部分代码是这样包装的:(function($){//majorityofcodehere...})(jQuery);($)和(jQuery)发生了什么?我没有被教导这样编码,也没有见过它们。他们的目的是什么?此外,没有document.ready,但我认为这是因为代码在末尾被();读取后立即执行? 最佳答案 var$="somevaluewedon'tcareabout";//v=====normalplainoldfunction(function($){//^=======receiv

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 - !function(){}() 究竟是如何工作的?

这个问题在这里已经有了答案:Whatdoestheexclamationmarkdobeforethefunction?(8个答案)关闭8年前。我见过:!function(){//code}();在多个地方使用以立即执行匿名函数。通常,它用于代替:(function(){//code}())有人知道!实际上是如何执行函数的吗?

javascript - 语法错误 : JSON Parse error: Unexpected identifier "object" (anonymous function)

我不明白解析文件时出了什么问题:{"t":-9.30,"p":728.11,"h":87.10}javascript代码:functioncheck(){$.get("http://....file.json",function(response,status,xhr){if(status=="success"){varjson=JSON.parse(response);$("#temp").html(json.t+"°");$("#pressure").html(json.p+"mmhg");}if(status=="error"){$("#temp").html("erro