美文网首页前端让前端飞JavaScript 进阶营
js中函数的默认参数用法和解析

js中函数的默认参数用法和解析

作者: 绿芽 | 来源:发表于2022-04-06 13:54 被阅读0次

1、带默认值的参数

函数中的参数可以传入默认值,当有实参传入的时候就赋值实参,当没有传递实参的时候或者指定传递的参数为undefined时,形参就会使用默认值。如:

function getNum(num1, num2 = 5) {
return num1 + num2;
}
console.log(getNum(1)); // 6
console.log(getNum(1, 1)); // 2
console.log(getNum(1, undefined)); // 6

2、参数默认值表达式

函数参数的默认值不光可以是一个普通类型的值。也可以是一个函数表达式来获取值如:

let value = 1;
function getValue() {
    return value++;
}
function add(sum1, sum2 = getValue()) {
    return sum1 + sum2;
}
console.log(add(1, 1)); // 2
console.log(add(1)); // 2
console.log(add(1)); // 3

上述代码中,当调用add()函数没有第二个值传入的时候就会调用getValue()方法获取默认值,并且因为getValue()获取的是动态的值,所以每调用一次sum2就会赋值不同的值来进行计算。

3、参数默认值的暂时性死区

函数的参数还可以将前面参数的值,作为后面参数的默认值。如:

function add(sum1, sum2 = sum1){
    return sum1 + sum2;
}
console.log(add(1)); // 2

上面的代码将sum1传入的值当作了sum2参数的默认值,也就是调用add()方法只需要传递一个参数就可以了。但是反过来将后面的参数作为前面参数的默认值就不行。如:

function add(sum1 = sum2, sum2){
    return sum1 + sum2;
}
console.log(add(undefined, 1)); // 报错

上面代码将sum2参数的值作为sum1的默认参数就会报错,是因为出发了暂时性死区,当sum2赋值给sum1的时候,sum2还没有进行定义,所以报错。

4、剩余参数

设计剩余参数是为了替代 ES 中的 arguments。它是由(…)name 三个点和参数名所组成的,会将函数传入的参数按照传入顺序收集成一个数组。如:

function add(sum1, ...sum){
    return sum;
}
console.log(add(...[1,2,4,5])); //  [2, 4, 5]

上面代码会将第一个参数赋值给sum1,其他剩余的参数全部赋值给sum收集起来组成一个数组。(注意:在调用函数时使用…是展开运算符,将数组中的参数展开后传入。)

剩余参数会有两个限制:

1、 函数只能有一个剩余参数,并且它必须被放在最后。
2、 不能在对象字面量的 setter 属性中使用(因为对象字面量的 setter 被限定只能使用单个参数)。
例:

function add(...sum, sum1){
    return sum;
}
console.log(add(1,2,4,5)); //  语法错误

let obj = {
    set name(...value) { // 语法错误
        console.log(value);
    }
};

相关文章

  • js中函数的默认参数用法和解析

    1、带默认值的参数 函数中的参数可以传入默认值,当有实参传入的时候就赋值实参,当没有传递实参的时候或者指定传递的参...

  • Kotlin-函数

    函数声明 Kotlin 中的函数使用 fun 关键字声明: 函数用法 调用函数使用传统的方法: 默认参数 函数参数...

  • 7函数的扩展

    OLD函数默认参数 基本用法 在 ES2017 中,允许定义和调用函数时,最后一个参数有, 惰性求值 报错情景 当...

  • ES6---函数与对象的语法糖

    对未定义的参数的解决办法(默认参数值) 在调用时解析 在函数被调用时,参数默认值会被解析,所以不像Python中的...

  • ES6-函数扩展(默认参数篇)

    1、默认参数用法 函数默认参数示例: 函数参数的默认值可以与解构赋值结合使用,此处的学习容易混乱,主要还是学以致用...

  • ES6 函数的扩展

    一、 函数参数的默认值 1、基本用法 ES6允许为函数的参数设置默认值,直接写在参数定义的后面。 参数变量是默认声...

  • 函数参数默认值

    基础用法 使用默认值语法设置函数参数的默认值。

  • eval介绍

    eval 的定义和用法 如果参数是表达式,eval()函数会执行表达式;如果参数是 js 语句,eval()函数会...

  • ES6 函数扩展 JavaScript

    1.函数参数的默认值 基本用法 与解构赋值默认值结合使用 参数默认值的位置 函数的length属性 作用域 应用 ...

  • ES6学习笔记七|函数的扩展

    1. 函数参数的默认值 基本用法: ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。function ...

网友评论

    本文标题:js中函数的默认参数用法和解析

    本文链接:https://www.haomeiwen.com/subject/fvgcsrtx.html