芯片|web前端培训 - 如何设置函数参数的默认值( 二 )


function put(toy toyBox = [
) {
toyBox.push(toy);
return toyBox;

console.log(put('Toy Car'));
// -> ['Toy Car'

console.log(put('Teddy Bear'));
// -> ['Teddy Bear'
not ['Toy Car''Teddy Bear'

该参数可以采用函数结果的默认值 。
考虑以下示例:
function date(d = today()) {
console.log(d);

function today() {
return (new Date()).toLocaleDateString(\"en-US\");

date();
date() 函数采用一个参数 , 其默认值是 today() 函数的返回值 。 today() 函数以指定的字符串格式返回今天的日期 。
当我们声明 date() 函数时 , today() 函数在我们调用 date() 函数之前尚未计算 。
我们可以使用这个特性来使参数成为强制性的 。 如果调用者没有传递任何参数 , 我们会抛出如下错误:
function requiredArg() {
throw new Error('The argument is required');

function add(x = requiredArg() y = requiredArg()){
return x + y;

add(10); // error
add(1020); // OK
3) 在默认值中使用其他参数
我们可以为参数分配一个引用其他默认参数的默认值 , 如以下示例所示:
function add(x = 1 y = x z = x + y) {
return x + y + z;

console.log(add()); // 4
在 add() 函数中:
y 的默认值设置为 x 参数 。
z 的默认值是 x 和 y 的和
add() 函数返回 x、y 和 z 的总和 。
参数列表似乎有自己的范围 。 如果引用尚未初始化的参数 , 则会报错 。 例如:
function subtract( x = y y = 1 ) {
return x - y;

subtract(10);
错误信息:
Uncaught ReferenceError: Cannot access 'y' before initialization
使用函数
我们可以使用函数的返回值作为参数的默认值 。 例如:
let taxRate = () => 0.1;
let getPrice = function( price tax = price * taxRate() ) {
return price + tax;

let fullPrice = getPrice(100);
console.log(fullPrice); // 110
在 getPrice() 函数中 , 我们调用了 taxRate() 函数来获取税率 , 并使用这个税率从价格中计算出税额 。
参数对象
函数内部参数对象的值arguments是我们传递给函数的实际参数的数量 。 例如:
function add(x y = 1 z = 2) {
console.log( arguments.length );
return x + y + z;

add(10); // 1
add(10 20); // 2
add(10 20 30); // 3
现在 , 我们应该了解了 JavaScript 默认函数参数以及如何有效地使用它们了 。

【芯片|web前端培训 - 如何设置函数参数的默认值】