ES6学习笔记函数扩展(rest 参数,箭头函数等)

一、rest参数
ES6 引入 rest 参数(形式为…变量名)用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

function add(...values){
	let sum = 0;
	for(let item of values){
		sum +=item;
	}
	return sum;
}
add(1,2,3)  //6
// arguments变量的写法
function num1() {
  return Array.prototype.slice.call(arguments).sort();
}

// rest参数的写法
const num2= (...numbers) => numbers.sort();

arguments对象不是数组,而是一个类似数组的对象。所以为了使用数组的方法,必须使用Array.prototype.slice.call先将其转为数组

注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。

// 报错
function f(a, ...b, c) {}

函数的length属性,不包括 rest 参数。

(function(a) {}).length  // 1
(function(...a) {}).length  // 0
(function(a, ...b) {}).length  // 1

函数的name属性,返回该函数的函数名。

function foo() {}
foo.name // "foo"

二、箭头函数
ES6 允许使用“箭头”(=>)定义函数。

var f = v =>v;
//相当于
var f = function(v){
	return v;
}

如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

var f  = ()=>5;
//相当于
var f =function (){
	return 5;
}
var sum = (num1,num2)=>num1+num2;
//相当于
var sum = function(num1,num2){
	return num1+num2;
}

如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

var sum = (num1,num2)=>{return num1=num2;}

如果箭头函数直接返回一个对象,必须再外面加上大括号,否则会报错。

var aa = ()=>({id:id});

下面是 rest 参数与箭头函数结合的例子。

var nums = (...num)=>num;
nums(1,2,3,5);   //[1,2,3,5]

使用的注意点
this对象是定义函数时所在的对象,而不是使用时的对象。
不可以当作构造函数
不可以使用arguments对象。

this的指向和arguments的变量

function f(){
setTimeout(()=>{
	console.log(this.a);
	console.log(arguments);
})
}
f.call({a:100},1,2,3,4) 
//100
//Arguments(4) [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是十年是思念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值