首页 web前端 js教程 讲解Javascript中什么是匿名函数

讲解Javascript中什么是匿名函数

Oct 12, 2018 pm 03:56 PM
javascript 匿名函数

本文给大家介绍Javascript中什么是匿名函数 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

分析:

         1、所谓匿名函数,从字面意思理解,就是没有名字的函数,js 用()来代替(注意,是英文状态下的括号

         2、定义形式:   

function (){
    //to add codes that you want to add
}
登录后复制

3、匿名函数作用

(1)与闭包函数相比较,最大作用是不污染全局对象,一旦执行完毕,GC自动回收内存,这是与闭包函数本质的区别。闭包函数的一大特点是:

变量常驻内存,只有关闭浏览器时,才释放。

function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
      alert(n);
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); // 1000
登录后复制

在如上这段代码中,result实际上就是闭包f2函数。它一共运行了两次,第一次的值是999,第二次的值是1000。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。

为什么会这样呢?原因就在于f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage collection)回收。

这段代码中另一个值得注意的地方,就是“nAdd=function(){n+=1}”这一行,首先在nAdd前面没有使用var关键字,因此 nAdd是一个全局变量,而不是局部变量。其次,nAdd的值是一个匿名函数(anonymous function),而这个

匿名函数本身也是一个闭包,所以nAdd相当于是一个setter,可以在函数外部对函数内部的局部变量进行操作。

(2)与一般函数相比较,不执行预编译。

function fuc() {
    fuc1(); //foo被提到了作用域的最前面, 于是这里可以正常调用foo函数
    fuc2(); //这里会报错bar是个undefined
    function fuc1() {alert("foo()") }
    var fuc2 = function () { alert("bar")};
}
登录后复制

Code:

匿名函数的几种表现形式:

模式一:函数字面量 (Function Literal)

先声明函数对象,然后执行。

(function(){ 
// insert code here 
})();
登录后复制

模式二:优先表达式 (Prior Expression)

由于 JavaScript 按照从内到外的顺序执行表达式,因此使用括号来强制执行已声明的函数。

(function(){ 
// insert code here 
}());
登录后复制

模式三:Void 操作符 (Void Operator)

使用 Void 操作符执行一个单独的操作数。

void function(){ 
// insert code here 
}();
登录后复制

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问JavaScript视频教程

相关推荐:

JavaScript图文教程

JavaScript在线手册

以上是讲解Javascript中什么是匿名函数的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C++ 匿名函数的用法和特点 C++ 匿名函数的用法和特点 Apr 19, 2024 am 09:03 AM

匿名函数,又称lambda表达式,是一种不指定名称的函数,用于一次性使用或传递函数指针。特点有:匿名性、一次性使用、闭包、返回类型推断。实战中常用于排序或其他一次性函数调用。

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

如何在JavaScript中获取HTTP状态码的简单方法 如何在JavaScript中获取HTTP状态码的简单方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务

Golang 匿名函数可以返回多个值吗? Golang 匿名函数可以返回多个值吗? Apr 13, 2024 pm 04:09 PM

是的,Go语言中的匿名函数可以返回多个值。语法:func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//函数体}。使用方法:使用:=操作符接收返回值;使用return关键字返回多个值。

Python Lambda表达式:缩写,简洁,强大 Python Lambda表达式:缩写,简洁,强大 Feb 19, 2024 pm 08:10 PM

pythonLambda表达式是一个强大且灵活的工具,可用于创建简洁、可读且易于使用的代码。它们非常适合快速创建匿名函数,这些函数可以作为参数传递给其他函数或存储在变量中。Lambda表达式的基本语法如下:lambdaarguments:expression例如,以下Lambda表达式将两个数字相加:lambdax,y:x+y这个Lambda表达式可以传递给另一个函数作为参数,如下所示:defsum(x,y):returnx+yresult=sum(lambdax,y:x+y,1,2)在这个例子

Python Lambda表达式:让编程变得更轻松 Python Lambda表达式:让编程变得更轻松 Feb 19, 2024 pm 09:54 PM

pythonLambda表达式是一个小的匿名函数,它可以将一个表达式存储在变量中并返回它的值。Lambda表达式通常用于执行简单的任务,这些任务可以通过编写一个单独的函数来完成,但Lambda表达式可以使代码更简洁和易读。Lambda表达式的语法如下:lambdaarguments:expressionarguments是Lambda表达式接收的参数列表,expression是Lambda表达式的体,它包含需要执行的代码。例如,以下Lambda表达式将两个数字相加并返回它们的和:lambdax,

Python Lambda表达式:揭秘匿名函数的强大奥秘 Python Lambda表达式:揭秘匿名函数的强大奥秘 Feb 24, 2024 am 09:01 AM

python中的Lambda表达式是匿名函数的另一种语法形式。它是一个小型匿名函数,可以在程序中任何地方定义。Lambda表达式由一个参数列表和一个表达式组成,表达式可以是任何有效的Python表达式。Lambda表达式的语法如下:lambdaargument_list:expression例如,下面的Lambda表达式返回两个数字的和:lambdax,y:x+y这个Lambda表达式可以传递给其他函数,例如map()函数:numbers=[1,2,3,4,5]result=map(lambda

如何使用WebSocket和JavaScript实现在线电子签名系统 如何使用WebSocket和JavaScript实现在线电子签名系统 Dec 18, 2023 pm 03:09 PM

如何使用WebSocket和JavaScript实现在线电子签名系统概述:随着数字化时代的到来,电子签名被广泛应用于各个行业中,以取代传统的纸质签名。WebSocket作为一种全双工通信协议,可以与服务器进行实时的双向数据传输,结合JavaScript可以实现一个在线电子签名系统。本文将介绍如何使用WebSocket和JavaScript来开发一个简单的在线

See all articles