博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 - 函数扩展
阅读量:6714 次
发布时间:2019-06-25

本文共 1659 字,大约阅读时间需要 5 分钟。

函数新增特性:

  • 参数默认值
  • rest参数
  • 扩展运算符
  • 箭头函数
  • this绑定
  • 尾调用

1.默认参数

{	function test(x,y = 'world'){		console.log('默认值',x,y);	}	test('hello'); //hello world	test('hello', 'kill'); // hello kill}复制代码

首先我们看上面的代码,函数默认值就是参数含有默认值的函数,此例子中y是有默认值的,值是world,所以我们在调用的时候,如果没有给定第二个参数,输出的结果是 hello world,如果给了第二个参数,那么第二个参数就会取代默认值,输出 hello kill。 这里有一点需要注意,

函数默认值的后面不能再有其他没有默认值的参数,这样是错误的

2.作用域

{	let x = 'test';	function test2(x,y=x){		console.log('作用域',x,y)	}	test2('kill');  // 作用域 kill kill	test2();        // 作用域 underfind underfind}复制代码

上面的代码,我们可以看到我们的函数声明中,y=x ,我们在调用函数的时候,第一次只是传入了一个参数,相当于传入了参数x,因为y=x ,所以函数结果是 作用域 kill kill,当没有传入参数时,两个值都是 underfind。 下面我们将上面的函数做一些修改

{	let c = 'test';	function test2(x,y=c){		console.log('作用域',x,y)	}	test2('kill');  // 作用域 kill test}复制代码

我们没有在函数参数中声明 c, 此时的值输出 kill test ,可以看出,函数的参数是有一个自己的作用域的,跟外部的作用域不是一个作用域。

3.rest参数

{	//rest 参数	function test3(...arg) {		for(let v of arg) {			console.log('rest', v)		}	}	test3(1,2,3,4,'a')}复制代码

在es5中是没有这个使用方式的,只是在es6中才有,我们看一下输出的结果是什么

rest 1rest 2rest 3rest 4rest a复制代码

rest参数就是把输入的参数都转化为一个数组,这个和arguments参数有异曲同工之妙,但是不会有arguments参数第一个值的问题,这里也要注意

rest参数后不能有其他参数了

4.箭头函数

{	let arrow = v => v*2;	console.log(arrow(3));}复制代码

这里有一行代码,大家可以看一下,是什么意思?输出的结果是什么?

输出的结果是: 6

这句话就是我们常听到的箭头函数:我们怎么去看这行代码呢?

  • 前面的arrow是函数的名称
  • v是函数的参数,如果参数有多个或者没有参数,使用 ()包裹
  • => 这个符号的后面是函数的主体,前面的是参数
  • 最后的 v*2 是一个返回值

所以我们调用函数arrow(3) ,返回的是 3*2 等于 6;

{	let arrow2 = () => 5;	console.log(arrow2); // 5}复制代码

这个就是没有参数的时候的箭头函数表示方法。

做箭头函数的要注意类似绑定,不是所有的时候都适合用箭头函数,要随机应变。

5.尾调用##

什么是尾调用呢,就是在函数的最后一句话调用一个函数。

{	function tail(x) {		console.log('tail', x)	}	function fx(x) {		return tail(x)	}	fx(123) // tail 123}复制代码

我们这里的fx() 方法的最后调用了tail()方法,这个就是一个尾调用。 那尾调用有什么作用呢,提高性能

转载地址:http://dxelo.baihongyu.com/

你可能感兴趣的文章
log4j配置
查看>>
centos备份与还原
查看>>
fixed 兼容ie6
查看>>
条件+努力=?
查看>>
hadoop常用服务管理命令
查看>>
洛谷P4169 天使玩偶 (算竞进阶习题)
查看>>
Order By操作
查看>>
(三)mybatis之对Hibernate初了解
查看>>
nginx安装与配置
查看>>
Android 命令设置获取、IP地址、网关、dns
查看>>
查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by...
查看>>
[SQL in Azure] Windows Azure Virtual Machine Readiness and Capacity Assessment
查看>>
关于CCR测评器的自定义校验器(Special Judge)
查看>>
java设计模式之 装饰器模式
查看>>
利息力(force of interest)
查看>>
Oracle 角色及其权限
查看>>
NiftyDialogEffects:集成了多种动画效果的Dialog控件
查看>>
《世界是数字的》读后感
查看>>
AD软件原理图封装过程(即由原理图转换到PCB)
查看>>
cocos2d-x lua table与json的转换
查看>>