JS进阶-函数进阶(一)

• 函数提升

函数提升与变量提升比较类似,是指函数在声明之前即可被调用。

总结:

1. 函数提升能够使函数的声明调用更灵活

2. 函数表达式不存在提升的现象

3. 函数提升出现在相同作用域当中

 

• 函数参数

1. 动态参数

arguments 是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参

 

2. 剩余参数

剩余参数允许我们将一个不定数量的参数表示为一个数组

1. ... 是语法符号,置于最末函数形参之前,用于获取多余的实参 

2. 借助 ... 获取的剩余实参,是个真数组

 

开发中,还是提倡多使用 剩余参数。 

总结:

1. 剩余参数主要的使用场景是?

  • 用于获取多余的实参

2. 剩余参数和动态参数区别是什么?开发中提倡使用哪一个?

  • 动态参数是伪数组
  •  剩余参数是真数组
  • 开发中使用剩余参数想必也是极好的

3.展开运算符

展开运算符(…),将一个数组进行展开

典型运用场景: 求数组最大值(最小值)、合并数组等 

展开运算符 or 剩余参数 

  • 剩余参数:函数参数使用,得到真数组
  • 展开运算符:数组中使用,数组展开

• 箭头函数

目的:引入箭头函数的目的是更简短的函数写法并且不绑定this,箭头函数的语法比函数表达式更简洁

使用场景:箭头函数更适用于那些本来需要匿名函数的地方

1. 基本语法

 

 

 

总结:

1. 箭头函数属于表达式函数,因此不存在函数提升

2. 箭头函数只有一个参数时可以省略圆括号 ()

3. 箭头函数函数体只有一行代码时可以省略花括号 {},并自动做为返回值 被返回

4. 加括号的函数体返回对象字面量表达式 

2. 箭头函数参数

1. 普通函数有arguments 动态参数

2. 箭头函数没有 arguments 动态参数,但是有 剩余参数 ..args

3. 箭头函数this

在箭头函数出现之前,每一个新函数根据它是被如何调用的来定义这个函数的this值, 非常令人讨厌。 箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。

重点:箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。

 

在开发中【使用箭头函数前需要考虑函数中 this 的值】,事件回调函数使用箭头函数时,this 为全局的 window,因此 DOM事件回调函数为了简便,还是不太推荐使用箭头函数 

总结:

1. 箭头函数里面有this吗?

  • 箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this

2. DOM事件回调函数推荐使用箭头函数吗?

  • 不太推荐,特别是需要用到this的时候
  • 事件回调函数使用箭头函数时,this 为全局的 window

最后,其实JS中的箭头函数就是Java中的lambada表达式,用法几乎一模一样

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/423009.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache DolphinScheduler社区新晋Committer:伏长海的开源之旅

文章作者:**伏长海** 文章整理:曾辉 个人介绍 大家好,我是伏长海,目前在珍岛集团担任大数据开发工程师职位! GitHub ID:fuchanghai 在算法平台后端的研究领域耕耘了三年,任务调度方面也有一年半的深入探索。闲暇时…

ORA-01033: ORACLE initialization or shutdown in progress---惜分飞

客户反馈数据库使用plsql dev登录报ORA-01033: ORACLE initialization or shutdown in progress的错误 出现该错误一般是由于数据库没有正常open成功,查看oracle 告警日志发现 Mon Jan 22 16:55:50 2024 Database mounted in Exclusive Mode Lost write protection disabled …

【Linux】—— 命名管道详解

命名管道是一种在操作系统中用于进程间通信的机制,它允许不同的进程之间通过管道进行数据交换。与匿名管道相比,命名管道具有更多的灵活性和功能。在本博客中,我们将深入探讨命名管道的概念、用途以及如何在编程中使用它们。 目录 &#xff…

pycharm创建vue项目idealTree:npm: sill idealTree buildDeps,换taobao源后还不好使?那就再换一个

心血来潮打算写个小项目,前后端分离,flask/fastapivue(具体用哪个后端还没想好),里面的功能大概就是目前所有热门的应用的合集,一键出结果的那种,然后跟随着科技趋势,不断去更新维护…

实现钉钉与宁波银行对接,助力东吴黄金集团财务智能化

客户介绍: 某黄金集团有限公司是一家在国内外黄金市场上具有重要影响力的综合性黄金企业。该公司拥有一支高素质、专业化的团队,具备丰富的行业经验和卓越的执行力。在业务范围上,该公司涵盖了黄金勘探、采选、冶炼、加工、销售等全产业链&a…

C#使用DateAndTime.DateDiff方法计算年龄

目录 一、计算年龄的方法 二、 DateAndTime类 1.定义 2.常用方法 3.DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear) 三、使用DateAndTime.DateDiff方法计算年龄 一、计算年龄的方法 使用DateDiff方法计算系统时间与员工生日之间相隔的年…

【机器学习:异常值检测】新颖性和异常值检测

【机器学习:异常值检测】新颖性和异常值检测 异常值检测方法概述新颖性检测纵向扩展单类 SVM 异常值检测拟合椭圆包络隔离林局部异常因子使用局部异常因子进行新颖性检测 许多应用程序需要能够确定新观测值是属于与现有观测值相同的分布(它是异常值&…

【算法练习Day51】柱状图中最大的矩形

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 柱状图中最大的矩形思路动态…

【C++】初识类和对象

引言 在C语言中,我们用结构体来描述一个复杂的对象,这个对象可能包括许多的成员,如用结构体描述一个学生的成绩,或者描述一个日期等。 struct Date {int _year;int _month;int _day; }; 如上是一个描述日期的结构体定义&#x…

不同业务模式的跨境电商如何借助云桥通SDWAN组网做Tiktok生意?

TikTok for Business的出海电商行业运营策略负责人在演讲中强调,商家在TikTok实现销售的两种主要方法包括开设TikTokShop和利用各类广告产品引流到独立站。在TikTokShop开店的过程中,商家需完成入驻、学习运营指南、通过新店铺考察期等步骤。而利用广告引…

HYBBS 表白墙网站PHP程序源码 可封装成APP

源码介绍 PHP表白墙网站源码,可以做校园内的,也可以做校区间的,可封装成APP。告别QQ空间的表白墙吧。 安装PHP5.6以上随意 上传程序安装,然后设置账号密码,登陆后台切换模板手机PC都要换开启插件访问前台。 安装完…

MySQL---多表分组查询综合练习

创建dept表 CREATE TABLE dept ( deptno INT(2) NOT NULL COMMENT 部门编号, dname VARCHAR (15) COMMENT 部门名称, loc VARCHAR (20) COMMENT 地理位置 ); 添加dept表主键 mysql> alter table dept add primary key(deptno); Query OK, 0 rows affected (0.02 s…