js中的匿名函数_js匿名函数怎么定义

js中的匿名函数_js匿名函数怎么定义定义:匿名函数顾名思义指的是没有名字的函数,在实际开发中使用的频率非常高!也是学好JS的重点。匿名函数:没有实际名字的函数。首先我们声明一个普通函数://声明一个普通函数,函数的名字叫fnfunctionfn(){console.log(“张培跃”);}然后将函数的名字去掉即是匿名函数://匿名函数,咦,运行时,你会发现报错啦!function(){console.log(“张培跃”);}到此,你会发现单独运行一个匿名函数,由于不符合语法…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

定义:匿名函数顾名思义指的是没有名字的函数,在实际开发中使用的频率非常高!也是学好JS的重点。

匿名函数:没有实际名字的函数。

首先我们声明一个普通函数:

//声明一个普通函数,函数的名字叫fn

function fn(){

    console.log(“张培跃”);

}

然后将函数的名字去掉即是匿名函数:

//匿名函数,咦,运行时,你会发现报错啦!

function (){

    console.log("张培跃");

}

到此,你会发现单独运行一个匿名函数,由于不符合语法要求,报错啦!解决方法只需要给匿名函数包裹一个括号即可:

//匿名函数在其它应用场景括号可以省略

(function (){

    //由于没有执行该匿名函数,所以不会执行匿名函数体内的语句。

    console.log("张培跃");

})

如果需要执行匿名函数,在匿名函数后面加上一个括号即可立即执行!

(function (){

    //此时会输出张培跃

    console.log("张培跃");

})()

倘若需要传值,直接将参数写到括号内即可:         

(function (str){

    //此时会输出张培跃好帅!

    console.log("张培跃"+str);

})("好帅!")

匿名函数的应用场景

1、事件

<input type="button" value="点我啊!" id="sub">

<script>

    //获得按钮元素

    var sub=document.querySelector("#sub");

    //给按钮增加点击事件。

    sub.onclick=function(){

        alert("当点击按钮时会执行到我哦!");

    }

</script>

2、对象

var obj={

    name:"张培跃",

    age:18,

    fn:function(){

        return "我叫"+this.name+"今年"+this.age+"岁了!";

    }

};

console.log(obj.fn());//我叫张培跃今年18岁了!

3、函数表达式

/将匿名函数赋值给变量fn。

var fn=function(){

    return "我是一只小小小小留下,怎么飞也飞不高!"

}

//调用方式与调用普通函数一样

console.log(fn());//我是一只小小小小留下,怎么飞也飞不高!

4、回调函数

setInterval(function(){

    console.log("我其实是一个回调函数,每次1秒钟会被执行一次");

},1000);

5、返回值

//将匿名函数作为返回值

function fn(){

    //返回匿名函数

    return function(){

        return "张培跃";

    }

}

//调用匿名函数

console.log(fn()());//张培跃

//或

var box=fn();

console.log(box());//张培跃

模仿块级作用域

块级作用域,有的地方称为私有作用域。JavaScript中是没有块级作用域的,例如:

if(1==1){//条件成立,执行if代码块语句。

    var a=12;//a为全局变量

}

console.log(a);//12

 

for(var i=0;i<3;i++){

    console.log(i);

}

console.log(i);//4

if(){}for(){}等没有自己的作用域。如果有,出了自己的作用域,声明的变量就会立即被销毁了。但是咱们可以通过匿名函数来模拟块级作用域:

(function(){

    //这里是我们的块级作用域(私有作用域)

})();

尝试块级作用域:

function fn(){

    (function(){

        var la="啦啦啦!";

    })();

    console.log(la);//报错---la is not defined

}

fn();

匿名函数的作用:

1、通过匿名函数可以实现闭包,关于闭包在后面的文章中会重点讲解。在这里简单介绍一下:闭包是可以访问在函数作用域内定义的变量的函数。若要创建一个闭包,往往都需要用到匿名函数。

2、模拟块级作用域,减少全局变量。执行完匿名函数,存储在内存中相对应的变量会被销毁,从而节省内存。再者,在大型多人开发的项目中,使用块级作用域,会大大降低命名冲突的问题,从而避免产生灾难性的后果。自此开发者再也不必担心搞乱全局作用域了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186348.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 利用PySpark统计相邻字符串对出现的次数

    利用PySpark统计相邻字符串对出现的次数

    2021年11月23日
    65
  • ubuntu安装go语言_go语言web服务器

    ubuntu安装go语言_go语言web服务器来源:微信公众号「编程学习基地」文章目录简介下载go安装包环境配置添加环境变量第一个go语言程序go入门学习简介go语言是一种开源的、语法精简的静态编程语言,它的开源社区比较庞大,应用场景非常广范。可以用于系统监控、容器技术(Docker)、大数据、存储技术、分布式系统(HyperledgerFabric)、消息系统(Kafka客户端)、服务器管理、安全工具、Web工具等。这里介绍在Linux上安装并配置go。下载go安装包到GoLang中国,下载Go语言安装包。解压tar-xzv..

    2022年10月12日
    2
  • Android中ActivityManager学习笔记(1)-MemoryInfo「建议收藏」

    Android中ActivityManager学习笔记(1)-MemoryInfo「建议收藏」ActivityManager       与系统中所有的Activity进行交互的类。官网一句话解释了这个东西,但是有点随意了。ActivityManager的作用很多,我们通过它获得内存信息,进程信息,还可以终止某个进程。当然啦,只能终止用户的进程,系统的进程是杀死不了的。下面我通过实例,一步一步学习它的具体作用,我也是刚学,不能从宏观的角度给大家解释清楚它的具体作用。希望通过程序一

    2025年9月26日
    6
  • sql server 字符串和日期的转换函数[通俗易懂]

    sql server 字符串和日期的转换函数[通俗易懂]字符串转换为日期:cast(‘20100514’asdatetime)日期转换为字符串:CONVERT(nvarchar(30),GETDATE(),126)日期格式规则如下:1101美国mm/dd/yyyy2102ANSIyy.mm.dd3103英国/法国dd/mm/yy4104德国dd.mm.yy5105意大利dd-m

    2022年10月8日
    3
  • echart旭日图_海报级设计感的旭日图,就在 ECharts 4.0

    echart旭日图_海报级设计感的旭日图,就在 ECharts 4.02018年1月16日ECharts发布了4.0,其中包括一种新的图表系列——旭日图。普通旭日图:文艺旭日图:2B旭日图——这货真的长得像个旭日啊щ(゚Д゚щ):可能大家印象中的旭日图就只能做到上面“普通旭日图”的样子了,很难想象这么有设计感的作品,居然可以是通过配置项写出来的吧?(羡婆卖瓜~)因为这可是ECharts家的旭日图呀!除了颜值之外,我们还提供了丰富的功能使得旭…

    2022年9月26日
    2
  • java 分苹果_数据结构Java版

    java 分苹果_数据结构Java版有600个苹果,10个盒子,要求把600个苹果分装到10个盒子里。如果有人来买苹果随便说出一个数,直接拿这些盒子组装一下就可以给他不用拆分盒子。请问这10个盒子应该分别装多少苹果?代码如下importjava.util.Scanner;publicclassTest{ publicstaticvoidmain(String[]args){  intbox[]=

    2022年10月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号