参考以下博客,建议查看原博客,它更为详细;
ES6 阮一峰
rest参数
rest参数将获取函数的多余的参数,rest后面的变量是一个数组;变量会把会把参数放入到数组中;
使用方法:…变量名
function xyd(...a){
console.log(a);
}
xyd(1,2,3)//[1,2,3]; 当运行函数xyd后,rest参数后面的变量a,会把传入的参数1,2,3放入到一个数组中;
注意rest之后不能有其他的参数,也就是说rest参数必须是函数的参数的最后一个参数;
function xyd(...a,b){console.log(a,b);}
xyd(1,2,3,4,6)
报错;
函数的length属性不包含rest参数;
扩展运算符
扩展运算符可以看作是rest参数的逆运算,它是把数组转为用逗号分隔的参数序列使用方法:…
console.log(...[1,2,3]);//1 2 3
console.log(1,...[1,2,3]);// 1 1 2 3
运算符号主要用于函数调用;
function xyd(x,y){
console.log('x='+x,'y='+y)
}
var arr = [1,2];
xyd(...arr);//3
上面的使用了运算符;当运行函数xyd是,变量arr是一个数组,使用运算符把变量arr转换为参数序列;这里结果就是3;
扩展运算符可以代替apply方法;
// ES5的写法
function f(x, y, z) {
console.log(x,y,z)
}
var args = [0, 1, 2];
f.apply(null, args);
// ES6的写法
function f(x, y, z) {
// ...
}
var arr= [0, 1, 2];
f(...arr);
扩展运算符的应用:
合并数组;
var a = [1,2,3];
var b = [4,5,6];
var c = [7,8,9];
var x = [...a,...b,...c]
console.log(x);//[1, 2, 3, 4, 5, 6, 7, 8, 9]
与解构赋值结合;
var [fistn,...test] = [1,2,3,4,5,6];
console.log(fistn);//1
console.log(test);//[2,3,4,5,6]
注意:如果使用扩展运算符结合解构赋值使用;扩展运算符必须是最后一个,否则就会报错;
name属性
函数的name属性返回函数的名称;
function xyd(){
}
console.log(xyd.name);//xyd
注意函数是一个匿名函数;
ES5返回一个空的字符串;
ES6返回实际函数的名称;
var a = function (){}
console.log(a.name);//如果是ES5返回 ""
console.log(a.name);//如果是ES6返回 a