ES12 中的可选参数让函数参数匹配得更加灵活

在 JavaScript 中,函数是一种非常常用的数据类型。函数常常需要接受一些参数,以便在执行时使用。在 ES6 以前,函数的参数只能是必填的,也就是说,如果调用函数时没有传入该参数,就会报错。而在 ES6 中,我们可以使用默认参数来指定函数的默认值。而在 ES12 中,我们又新增了可选参数,让函数参数匹配得更加灵活。

可选参数的语法

在 ES12 中,我们可以使用问号(?)来指定一个参数为可选参数。可选参数必须放在参数列表的最后面,如下所示:

在上面的代码中,参数 y 是可选参数。如果调用 foo 函数时只传入一个参数,那么 y 的值会是 undefined。如果传入两个参数,那么 y 的值就是传入的值。

可选参数的应用场景

可选参数的应用场景非常广泛,下面我们来看一些常见的应用场景。

函数重载

在 JavaScript 中,函数没有重载的概念,但是我们可以通过函数的参数类型和个数来模拟函数重载。在 ES12 中,我们可以使用可选参数来简化函数重载的实现。例如,我们可以使用可选参数来实现一个函数,该函数可以接受任意个数的参数:

在上面的代码中,我们使用了可选参数来实现了一个可以接受任意个数参数的函数。如果传入的参数不是数字类型,那么会被转换成 undefined

函数参数的默认值

在 ES6 中,我们可以使用默认参数来指定函数参数的默认值。但是默认参数只能在参数列表的最后面,而且不能与可选参数一起使用。在 ES12 中,我们可以使用可选参数来实现函数参数的默认值。例如,我们可以使用可选参数来实现一个函数,该函数可以接受任意个数的参数,并且如果某个参数没有传入,则使用指定的默认值:

在上面的代码中,我们使用了可选参数来实现了一个可以接受任意个数参数的函数,并且使用了可选参数来指定了参数 z 的默认值为 0

函数参数的类型检查

在 TypeScript 中,我们可以使用接口来定义函数的参数类型。在接口中,我们可以使用可选属性来定义可选参数。例如,我们可以使用可选属性来定义一个函数的参数类型,该参数可以是一个数字或者是一个字符串:

在上面的代码中,我们使用了可选属性来定义了参数 y 的类型,该参数可以是一个数字或者是一个字符串。

总结

在 ES12 中,我们新增了可选参数的语法,让函数参数匹配得更加灵活。可选参数的应用场景非常广泛,例如函数重载、函数参数的默认值和函数参数的类型检查等。在实际开发中,我们可以根据具体的需求来灵活使用可选参数。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6570e4acd2f5e1655d98ed16


纠错
反馈