草庐IT

T_OLD_FUNCTION

全部标签

javascript - 为什么许多 JavaScript 库以 "(function () {"开头?

为什么很多javascript库看起来像这样:(function(){/*codegoeshere*/})();它似乎定义了一个立即调用的未命名函数。为什么要付出这样的努力? 最佳答案 这是在JavaScript中进行命名空间的标准方法。如果你只是声明varmy_cool_variable=5;它将是全局的,可能会与使用相同变量的其他库冲突。但是,如果你这样做了(function(){varmy_cool_variable=5;})();它现在是匿名函数的局部变量,在该函数范围之外是不可见的。您仍然可以通过不在变量前声明var来公开

javascript - 如何计算JavaScript中多个数组的交集?什么是 [等于 : function] mean?

我知道thisquestion,simplestcodeforarrayintersection但是所有的解决方案都假定数组的数量是两个,这在我的情况下不能确定。我在页面上有div,其中的数据包含数组。我想找到所有数组共有的值。我不知道我会提前有多少个div/数组。计算所有数组共有的值的最佳方法是什么?vararray1=["Lorem","ipsum","dolor"];vararray2=["Lorem","ipsum","quick","brown","foo"];vararray3=["Jumps","Over","Lazy","Lorem"];vararray4=[1337,

javascript - onClick ="javascript: function(' 值')'"和onClick ="function(' 值');”有什么区别?

这个问题在这里已经有了答案:Whenisthe'javascript:'prefixvalidsyntax?(4个答案)Whydoyouseecolonswhilecallingajavascriptfunctioninhtmlsometimes?[duplicate](3个答案)关闭12个月前。以下有什么区别?onClick="javascript:function('value');"onClick="function('value');"什么时候在函数调用之前使用javascript:,为什么?我可以在不使用javascript:前缀的情况下调用该函数吗?请帮助我理解其中的区别。

javascript - `new` 运算符如何能够覆盖硬绑定(bind),在 Function.prototype.bind(..)

这是一个纯粹的理论问题。我从“你不懂js”中学习javascript,我一直卡在JS中bind函数的实现上。考虑以下代码:functionfoo(something){this.a=something;}varobj1={};varbar=foo.bind(obj1);bar(2);console.log(obj1.a);//2varbaz=newbar(3);console.log(obj1.a);//2console.log(baz.a);//3在上面的代码片段中,我们将foo()绑定(bind)到obj1,所以foo()中的this>属于obj1,这就是当我们调用bar(2)时o

javascript - (function eval () {}) 如果函数体处于严格模式会抛出语法错误?

为什么这段代码会抛出错误?//globalnon-strictcode(functioneval(){'usestrict';});现场演示:http://jsfiddle.net/SE3eX/1/所以,我们这里有一个命名函数表达式。我想明确指出这个函数表达式出现在非严格代码中。如您所见,它的函数体是严格的代码。严格模式规则在这里:http://ecma-international.org/ecma-262/5.1/#sec-C相关项目符号是这个(它是列表中的最后一个):ItisaSyntaxErrortousewithinstrictmodecodetheidentifierseva

javascript - 在 JavaScript 中排序 : Should every compare function have a "return 0" statement?

我最近阅读了很多关于在JavaScript中排序的答案,我经常偶然发现一个看起来像这样的比较函数:array.sort(function(a,b){a>b?1:-1;});所以它是一个比较函数,如果a大于b则返回1,如果a小于或等于则返回-1b。如MDN(link)中所述,比较函数也可以返回零,以确保两个项目的相对位置保持不变:IfcompareFunction(a,b)returns0,leaveaandbunchangedwithrespecttoeachother,butsortedwithrespecttoalldifferentelements.所以官方的例子看起来更像这样:

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 - 为什么有些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。如果您尝试在这样的页面上使用$,您可能会遇