JavaScript默认参数函数

776 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情

在没有JavaScript默认参数函数的时候,我们给函数传递参数的时候,会经常需要判断传过来的参数时候有值,是否为空。

例如下面的函数,通常情况下,这个函数我们是需要传两个参数的,当然这个函数的y参数也可以是0,(现实情况是不允许的)

function calculate(x,y) {
    return x/y
}

如果在调用这个函数忘记传参,返回值是NaN。这个值如果在后面继续使用的话,可能旧会出现error。为了避免这个问题,我们需要在函数内部进行判断。

function calculate(x,y) {
    if(x===undefined){
        x=1
    }
    if(y===undefined){
        y=1
    }
    return x/y
}

当然你也可以选择在函数内部做其他操作。

image-20220124225340929

在此基础上,我们又可以进一步的简化代码。上面的if判断,先判断值是否存在不存在则用1,那么我们可以直接使用||

function calculate(x,y) {
    x=x||1
  y=y||1
    return x/y
}

image-20220124225629790

上面的两种方法都可以解决我们的问题,但是一旦参数过多,难道你需要一个一个的判断吗,100个参数,那岂不是需要100个判断,代码量不得飞起啊。

所以让我们完全能这样做。我们现在在 ES6 中可以做的只是在我们定义我们的函数时简单地设置它,

function calculate(x=1,y=1) {
    return x/y
}

image-20220124225912400

这里Javascript会自动判断是否是undefined ,如果是undefined 则会直接使用默认值。

使用默认值的注意点

  1. 不能用let和const再次声明默认值,var可以。

image-20220124230448995

  1. 默认参数可以不是一个值类型,它可以是一个函数调用