ES6总结 第三节 函数默认参数和剩余运算符使用

128 阅读1分钟

函数默认参数

es5 基本数据类型作为默认参数

let func = function(paramA, param) {
    paramA = 20 || paramA
    paramB = 30 || paramB
    return paramA + paramB
}
console.log(func())

es6 基本数据类型作为默认参数

let func = function(paramA = 20, paramB = 30) {
    return paramA + paramB
}
console.log(func())    // 50
console.log(func(5))    // 35
      

表达式作为默认参数

let func = function(paramA = 20, paramB = getVal()) {
    return paramA + paramB
}
console.log(func())  // 35 = 20 + 10 + 5

function getVal(val = 10) {
    return val + 5
}

剩余运算符使用

es5 在没有剩余运算符时的处理操作

const target = {
    name: 'Tom',
    id: 123,
    age: 40
}
console.log(getKey(target, 'name', 'age'))  // {name: "Tom", age: 40}
console.log(target)  // {name: "Tom", id: 123, age: 40}
function getKey(target) {     //获取类中的指定属性
    const obj = Object.create(null)
    for(let i = 1; i < arguments.length; i++) {
        console.log(arguments[i])
        obj[arguments[i]] = target[arguments[i]]
    }
    return obj;
}

使用ES6 剩余运算符的操作


const target = {
    name: 'Tom',
    id: 123,
    age: 40
}
console.log(getKey(target, 'name', 'age'))   // {name: "Tom", age: 40}
console.log(target)  					// {name: "Tom", id: 123, age: 40}
function getKey(target, ...arr) {
    console.log(arr)   				// ["name", "age"]
    const obj = Object.create(null)
    for(let i = 0; i < arr.length; i++) {
        obj[arr[i]] = target[arr[i]]
    }
    return obj;
}