1. 带参数的默认值的函数
// es5的写法
function add(a,b){
a = a||10;
b = b||20;
return a+b;
}
add();
console.log(add());//30
// --------------------------
// es6中
function add(a=10,b=20){
return a+b;
}
console.log(add());//30
console.log(add(30))//50 传入一个值,相当于传入了a ,b使用默认值
2. 默认的表达式也可以是一个函数
function add(a,b= getVal(5)){
return a+b;
}
function getVal(val){
return val+5;
}
console.log(add(1));//11
3.也可以是一个不具名函数
// es5写法:遍历比较麻烦
function pick(obj){
let result = Object.create(null);//相当于[];
for(let i = 1; i<arguments.length;i++){
// console.log(arguments[i])
result[arguments[i]] = obj[arguments[i]]
}
return result;
}
let book ={
'title':'es6教程',
'author':'小玉米',
'year':'2021',
}
let bookData = pick(book,'author','year');
console.log(bookData);//[author: "小玉米", year: "2021"]
es6写法
提供一个方法叫做剩余参数
剩余参数:是由三个点...和一个紧跟着具名参数指定,语法...keys
function pick(obj,...keys){ //必须放在最后一个参数那里
// console.log(keys);//["author", "year"]
let result = {};
for(let i = 0; i<keys.length;i++){
result[keys[i]] = obj[keys[i]];
}
return result;
}
let book ={
'title':'es6教程',
'author':'小玉米',
'year':'2021',
}
let bookData = pick(book,'author','year');
console.log(bookData);
剩余参数解决了arguments问题
更简单的例子
function checkArgs(...args){
console.log(args);//["a", "b", "c", "d"] 真实的数组
console.log(arguments);//Arguments(4) ["a", "b", "c", "d", callee: (...), Symbol(Symbol.iterator): ƒ] 伪数组
}
checkArgs('a','b','c','d')
4. 扩展运算符 ...
剩余运算符:把多个独立合并到一个数组中(一般用于函数的形参上)
扩展运算符:将一个数组分隔,并将各个项作为分离的参数
//处理数组中最大函数
const arr =[12,10,5,6,8,9];
// es5方法
console.log(Math.max.apply(null,arr));//12
// es6方法:使用扩展运算符更方便
console.log(Math.max(...arr));//12
网友评论