如何在 JavaScript 中声明可选函数参数?
2022-08-29 23:40:51
我可以声明默认参数,如
function myFunc( a, b=0)
{
// b is my optional parameter
}
在 JavaScript 中?
我可以声明默认参数,如
function myFunc( a, b=0)
{
// b is my optional parameter
}
在 JavaScript 中?
使用 ES6:这现在是语言的一部分:
function myFunc(a, b = 0) {
// function body
}
请记住,ES6 会检查值的针对性,而不是真实性(因此只有未定义的实值才会获得默认值 - 像 null 这样的虚假值不会默认)。undefined
使用 ES5:
function myFunc(a,b) {
b = b || 0;
// b will be set either to b or to 0.
}
只要您显式传递的所有值都是真实的,这就有效。根据MiniGod的评论,不真实的价值观:null, undefined, 0, false, ''
在函数实际启动之前,看到JavaScript库对可选输入进行大量检查是很常见的。
使用ES6,这完全可以按照您描述的方式实现。可以在文档中找到详细说明。
JavaScript 中的默认参数主要可以通过两种方式实现:
function myfunc(a, b)
{
// use this if you specifically want to know if b was passed
if (b === undefined) {
// b was not passed
}
// use this if you know that a truthy value comparison will be enough
if (b) {
// b was passed and has truthy value
} else {
// b was not passed or has falsy value
}
// use this to set b to a default value (using truthy comparison)
b = b || "default value";
}
该表达式计算 值 AND 存在,并返回 if 不存在或为 falsy 的值。b || "default value"
b
"default value"
b
替代声明:
function myfunc(a)
{
var b;
// use this to determine whether b was passed or not
if (arguments.length == 1) {
// b was not passed
} else {
b = arguments[1]; // take second argument
}
}
特殊的“数组”在函数内部可用;它包含所有参数,从索引到(其中是传递的参数数)。arguments
0
N - 1
N
这通常用于支持未知数量的可选参数(相同类型);但是,最好说明预期的参数!
尽管自ES5以来不可写,但已知某些浏览器不会强制执行此功能。如果您担心这一点,可以使用两种选择:undefined
b === void 0;
typeof b === 'undefined'; // also works for undeclared variables