【前言】
研究过Javascript代码库的人,会看到很多如下形式的函数: (function(){...}()) 或 (function(){})()
接下来简单总结概括下匿名函数相关知识点。
【主体】
(1)匿名函数:
(function(){})是一个标准的函数定义,但是没有赋值给任何变量。所以是没有名字的函数,叫匿名函数。没有名字就无法像普通函数那样随时随地调用了,所以在他定义完成后就马上调用他,后面的括号()是运行这个函数的意思。
(2)案例解析:
所以上面可以解释成为“匿名函数自调用”,也就是说,定义一个匿名函数,然后马上调用它(因为它是匿名的,如果不立即调用就获取不到该函数的引用了)。
(3)应用:
通常它被应用在一些大型的JS框架中(如上面所说的),因为这个匿名函数的函数体相当于提供一个匿名的名字空间,这样就不会再与用户自定义的JS函数、变量、对象发生冲突了。尽管JS没有显示地提供命名空间的定义和使用机制,但这种匿名方式却不失为是一种很好的解决命名空间问题的方法。
匿名函数:
(function(){...})(jQuery);
常用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码要小心使用。开发插件的格式如下:
(function ($) { $.fn.test111 = function () { alert('test') } })(jQuery);
调用插件:
$("#elementid").test111();
匿名函数 function(arg){...} 为匿名函数,参数为arg。调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){...})(param) 这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
而(function($){...})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery。等同于 var fn = function($){....}; fn(jQuery);
(funtion(){})();立即执行函数;相当于先申明一个函数,声明完后直接调用;
相当于:
(funtion(str){alert(str)})("output"));相当于:funtion OutPutFun(str){alert(str);};OutPutFun("output");
(4)通俗理解:
可以理解为一种闭包,把jQuery作为实参传入到形参为$的匿名函数里面。其写法相当于
function Test(t){ alert(t); }//定义函数 Test("Hello World!");//执行函数等价于
(function(t){alert(t);})("Hello World!");
一般写插件时避免变量全局污染,就用此方式写。
.
相关推荐
通过自执行匿名函数,jQuery确保了自身的封装和独立性,避免了全局变量污染。这种结构如`(function(window, undefined) {...})(window);`确保了在自己的作用域内执行,提高了代码的安全性和可维护性。其中,`...
匿名函数,顾名思义,就是没有名称的函数,它非常适合用作一次性或者局部函数。在JavaScript中,匿名函数的使用场景非常广泛,包括函数表达式、事件处理、回调函数等。本文将详细分析JavaScript匿名函数的用法。 ...
自调用匿名函数还有其他变体,例如,通过IIFE(Immediately Invoked Function Expression,立即执行的函数表达式)来实现: ```javascript void function() { // 模块代码 }(); ``` 或者使用圆括号包裹整个表达式...
在上述的jQuery源码示例中,立即执行的匿名函数被用来封装代码,防止污染全局作用域,同时创建一个私有的执行环境。 ```javascript (function() { // 私有变量和方法 var privateVar = 'secret'; // 公共接口 ...
整个jQuery库被包裹在一个立即执行的匿名函数中,这样可以确保其中定义的所有函数和对象只在这个作用域内可见,起到了类似命名空间的效果。同时,jQuery将其自身和$符号绑定到window对象,使得用户可以在全局范围内...
Lambda表达式允许开发者以一种简洁的方式定义匿名函数,它省去了创建单独类的步骤,使得代码更加紧凑。例如,`Runnable r = () -> System.out.println("Hello, Lambda!");` 这就是一个简单的Lambda表达式,它表示了...
##### 3.1 匿名函数与立即执行 ```javascript (function() { // jQuery 代码 })(); ``` 这段代码定义了一个匿名函数,并立即执行。这意味着函数内的代码会在加载页面时立即运行。 ##### 3.2 命名空间 ```...
首先,jQuery 源码以一个自调用匿名函数的形式开始,这种结构在JavaScript中称为自我执行函数表达式(Self-executing Anonymous Function Expression)。这样做主要有两个目的:一是创建一个独立的作用域,避免污染...
这部分使用了一个立即执行的匿名函数来包裹整个jQuery源码,这样做的目的是形成一个闭包,保护内部的变量不被外部干扰,同时也避免了命名冲突的问题。 ##### 4. 关键字保护 ```javascript var _jQuery = window....
Java 作为世界上最流行的编程语言之一,其源码解析对于开发者来说具有极高的学习价值。JDK 1.8.0_161 是 Java 8 的一个重要更新版本,其中包含了许多重要的特性和改进。通过深入研究这个版本的源码,我们可以更深入...
### 关于《jQuery源码详细中文注释(非扫描版)》的知识点解析 #### 一、背景介绍 本文档是一份对jQuery源码进行了详细中文注释的资源,由Auscar lin精心制作,旨在帮助广大jQuery爱好者更深入地理解和学习jQuery...
在这个模式下,`jQuery`是一个自执行匿名函数的返回值,而该匿名函数被立即执行,返回一个符合预期的jQuery对象。接下来,我们将重点探讨如何构建jQuery对象以及其内部的一些关键设计。 #### 二、构建jQuery对象 ...
`.each()`遍历这些元素,并对每个`<item>`执行内部的匿名函数。`$(this).find("title")`和`$(this).find("description")`分别找到当前`<item>`内的`<title>`和`<description>`子元素,然后通过`.text()`获取它们的...
例如,`$("#loginBtn").click(function() {...})`表示当用户点击ID为`loginBtn`的元素时,执行内联的匿名函数。 接下来,弹出登录框通常涉及到元素的显示与隐藏。jQuery提供`show()`和`hide()`方法,用于控制元素的...
11. **函数句柄和匿名函数**:函数句柄可用于函数作为参数传递,匿名函数(也称为lambda函数)是简短的无名函数,常用于函数的即时定义和回调。 12. **符号计算**:MATLAB的符号计算工具箱允许进行精确的数学运算,...
使用Predicate函数编程可以使用匿名内部类提供test()方法的实现,也可以使用lambda表达式实现test()。例如: ```java @Test public void testPredicate(){ java.util.function.Predicate<Integer> boolValue = x -...
4. **Lambda表达式和函数式编程**:JDK 1.8引入了重大特性——Lambda表达式,它简化了多参数匿名函数的编写,使得函数式编程风格在Java中变得可行。`java.util.function`包提供了大量函数接口,如`Function`, `...
JDK1.8引入了Lambda表达式,这是一种简洁的匿名函数写法,极大地简化了多参数、无状态、无异常的函数式编程。同时,为了支持Lambda,引入了函数式接口,如`Runnable`、`Consumer`、`Function`等。这些接口只有一个...