ES6函数增强

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6函数增强相关的知识,希望对你有一定的参考价值。

  函数参数可以拥有默认值。当我们调用函数时,如果没有进行相应的实参传递,函数就会使用参数的默认值。功能很强大,使用 却非常简单,只要在声明函数时候,给形参赋一个值就可以了,这个值就是该参数的默认值。

// num2拥有默认参数值5,如果没有给num2形参传递值,它的取值将会是5 
function sum (num1, num2 = 5) {
    return num1 + num2;
}

console.log(sum(1)) //6 调用sum函数时, 只传递了一个参数1,所以函数中num1 =1, num2就会使用默认参数,取值为5, 1+5 =6;
console.log(sum(1,2))  // 3 函数调用时,我们传递了两个参数,所以默认参数不起作用, 函数使用我们传递过去的参数 1+2 =3

  默认参数值,不仅可以像上面一样使用原始值,还可以使用js表达式。

//参数second的默认值,就是js表达式,取值为第一个参数的值。
function add(first, second = first) {
    return first + second;
}
console.log(add(1, 1)); // 2
console.log(add(1)); // 2

  甚至还可以使用函数表达式

function getValue(value) {
  return value + 5;
}
//参数second的默认值,就是函数表达式,函数参数是第一个参数的值。
function add(first, second = getValue(first)) {
    return first + second;
}
console.log(add(1, 1)); // 2
console.log(add(1)); // 7

  对于这个函数式的默认参数,函数的调用是惰性的,如果我们调用函数时,传递了两个参数add(1,1),函数的默认参数值是用不到的,所以函数不会调用。只有传递一个参数的时候add(1), 函数的默认参数值才会用到,作为默认参数值的函数才会调用。

  对于 js 表达式方式的默认参数,我们一定要注意参数的作用域。

 

以上是关于ES6函数增强的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript高级ES6常见新特性:词法环境letconst模板字符串函数增强SymbolSetMap

JavaScript高级ES6常见新特性:词法环境letconst模板字符串函数增强SymbolSetMap

JavaScript高级class类ES6实现继承ES6对象增强

JavaScript高级class类ES6实现继承ES6对象增强

ES6深入浅出-2 新版函数:4 迭代器与生成器-1.字面量增强

ES6 - 对象扩展(增强字面量)