js匿名函数和箭头函数_函数式编程

js匿名函数和箭头函数_函数式编程js匿名函数、箭头函数,以及他们的区别匿名函数箭头函数区别

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

Jetbrains全系列IDE稳定放心使用

js匿名函数、箭头函数,以及他们的区别

  • 匿名函数
  • 箭头函数
  • 区别

1.匿名函数

简单点说就是没有名字的函数,在声明函数时不写函数名称,(将函数赋值给变量)叫匿名函数。

匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染。

//普通函数
// 1.定义方法
function buy(){ 
   
	console.log('张三去买东西');
}
// 2.调用方法(不调用不执行)
buy()
//匿名函数
function (){ 
   
	console.log('没有名字')
}
//会报错

没有名字的函数会报错,这时候用一个括号把它包起来就不会报错了,然后在最后面加一个括号就可以马上执行这个函数了——直接调用,也叫自执行函数
作用: 避免多人开发时变量冲突,自执行函数只能调用一次。

//参数直接写在括号里
//写法1
(function (sum){ 
   
	console.log("JavaScript"+sum);
})("你好")
//输出内容为 JavaScript你好

//写法2
~function(){ 
   
	console.log('立即执行匿名函数!')
}()

//写法3
!function(){ 
   
	console.log('立即执行匿名函数!');
}()

匿名函数不能够提前调用,会报错,需要在函数声明之后调用。

// 将函数赋值给变量,通过变量调用
var fn = function(){ 
   
    console.log("hello js");
}
fn(); //输出 hello js

2.箭头函数

箭头函数表面上相当于匿名函数,并且简化了函数定义。

  • 当箭头函数只包含一个表达式时,连{…} 和return都省略了。
//相加
x => x + x
//即 function (x){ return x + x }
  • 不仅包含一个表达式时
(x,y) => { 
   
	return x + y;
}

3.区别

对比:

var x = function(){ 
   console.log('普通匿名函数')};
var y = ()=>{ 
   console.log('箭头函数')};
x();
y();

本质上都是函数,箭头函数是匿名函数的简写形式。最大区别就是this指向

普通函数:this指向直接调用者,非严格模式下没有找到直接调用者就指向window(严格模式下this是undefined)。

箭头函数:
1.没有prototype(原型),所以箭头函数本身没有this。

2.不能当作构造函数,即不能使用new命令。

3.不能使用arguments对象,函数体内不存在该对象。可使用rest参数代替。

4.* 没有调用者,捕获其所在(即定义的位置)上下文的this值, 作为自己的this值。this一旦被捕获,就不再发生变化。

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

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

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


相关推荐

  • pytest报错_eclipse提交代码到git

    pytest报错_eclipse提交代码到git前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月28日
    19
  • java程序并行机制_Java语言具有多种优点和特点,下列选项中,______反映了Java程序并行执行机制的特点。A.多线程B.健…

    java程序并行机制_Java语言具有多种优点和特点,下列选项中,______反映了Java程序并行执行机制的特点。A.多线程B.健…Java语言具有多种优点和特点,下列选项中,______反映了Java程序并行执行机制的特点。A.多线程B.健更多相关问题根据句意及首字母完成单词1.-Whatc__________isit?-It’sblack.2.Thecatisbalckandw__________.根据句意及首字母提示或汉语提示写出单词.1.Theoldmanlivesan____(安逸的…

    2022年7月9日
    20
  • kafka的应用场景有_后端用到kafka的地方

    kafka的应用场景有_后端用到kafka的地方kafka作为一个消息流处理平台。很多开发人员都作它作为一个生产&消费的中间件,并没有细细去思考kafka可以在哪些应用场景中使用,下面根据我的经验,总结下kafka可以应用在以下场景中。消息队列这种场景是日常用得最多之一。我日常需要将多台服务器上的日志集中收集到一个点上,通过logstash进行扫描并发到kafka队列中,然后通过消费者程序进行消费写到hbase或者es中。…

    2022年10月14日
    2
  • photoscan空三教程(无人机影像三维模型构建)

    PhotoScan无人机影像空三处理流程前言Photoscan是一款操作轻便,速度快的处理软件,以前一直被利用在处理实景三维或者近景建模,但是被用在测绘中,也是十分方便和精准。更重要的是photoscan可以轻松导出其他空三格式文件,后续很方便在Contextcapture进行重建,还可以在航天远景Mapmatrix或者CHCmapping中进行立体测图。本文重点介绍如何进行空三,并导出…

    2022年4月16日
    146
  • c++预编译头文件_VJVJ X27s 智能安卓手机

    c++预编译头文件_VJVJ X27s 智能安卓手机我们都知道,C++Builder编程是建立在VCL类库的基础上的。在程序中经常需要访问VCL对象的属性和方法。不幸的是,VCL类库并不保证其中对象的属性和方法是线程访问安全的(Thread_safe),访问VCL对象的属性或调用其方法可能会访问到不被别的线程所保护的内存区域而产生错误。因此,TThread对象提供了一个Synchronize方法,当需要在线程中访问VCL对象属性或调用方法时,通过Synchronize方法来访问属性或调用方法就能避免冲突,使各个线程之间协调而不会产生意外的错误。

    2022年9月23日
    3
  • Java练手小程序——QQ聊天「建议收藏」

    Java练手小程序——QQ聊天「建议收藏」1.思路图    2.主要功能     实现一对一聊天实现多对多聊天好友上线自动刷新功能3.知识点   界面布局:一是流布局,二是卡片布局(现在应该都不用了) socket通信之对象流objectinput/outputStream     将线程里面的信息显示到界面上4.项目代码    4.1服务端 

    2022年9月6日
    5

发表回复

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

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