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对象增强