Javascript-如何检查函数中特定“索引”处的参数是否丢失?
我想根据参数是否未定义返回不同的语句。问题是,如果第二个参数丢失,第三个参数“变成”第二个参数,因此无论哪一个参数丢失,我只会点击最后一个else if语句,该语句只应在最后一个参数丢失时应用。我已经研究过了,但找不到解决办法。我试着用Javascript-如何检查函数中特定“索引”处的参数是否丢失?,javascript,arguments,Javascript,Arguments,我想根据参数是否未定义返回不同的语句。问题是,如果第二个参数丢失,第三个参数“变成”第二个参数,因此无论哪一个参数丢失,我只会点击最后一个else if语句,该语句只应在最后一个参数丢失时应用。我已经研究过了,但找不到解决办法。我试着用 var array=Array.prototype.slice.call(arguments); 然后检查数组[0]、数组[1]和数组[2],但这也不起作用,因为我总是得到“c不存在” 任何帮助都将不胜感激。多谢各位 function testing(a,
var array=Array.prototype.slice.call(arguments);
然后检查数组[0]、数组[1]和数组[2],但这也不起作用,因为我总是得到“c不存在”
任何帮助都将不胜感激。多谢各位
function testing(a, b, c) {
if (a === undefined) {
return 'a doesnt exist'
} else if (b === undefined) {
return 'b doesnt exist'
} else if (c === undefined) {
return 'c doesnt exist'
}
}
testing(3, 'name')
如果调用方仅使用两个参数调用函数,则您不知道缺少的是第二个参数还是第三个参数,除非您可以从所需的类型推断出它。例如,如果您希望b是一个数字,c是一个函数,那么:
if (typeof b === "function") {
// `b` was omitted (effectively)
c = b;
b = undefined;
}
但是如果您希望b和c使用相同类型的参数,或者您允许它们使用任何类型的参数,那么您无法知道调用方只提供两个参数是指提供a和b还是a和c
在这种情况下,您必须对函数进行文档化,说明如果您想要有效地去掉b,您需要为它提供未定义的:testing1,undefined,3;这样做可以很好地利用ES2015的默认参数,而完全忽略它则不行
接受复杂参数组合的另一种方法是接受对象而不是离散参数:
功能测试选项{
console.loga:,options.a;
console.logb:,options.b;
console.logc:,options.c;
}
//用法
测试{a:1,c:3} 如果调用方仅使用两个参数调用函数,则您不知道缺少的是第二个参数还是第三个参数,除非您可以从所需的类型推断出它。例如,如果您希望b是一个数字,c是一个函数,那么:
if (typeof b === "function") {
// `b` was omitted (effectively)
c = b;
b = undefined;
}
但是如果您希望b和c使用相同类型的参数,或者您允许它们使用任何类型的参数,那么您无法知道调用方只提供两个参数是指提供a和b还是a和c
在这种情况下,您必须对函数进行文档化,说明如果您想要有效地去掉b,您需要为它提供未定义的:testing1,undefined,3;这样做可以很好地利用ES2015的默认参数,而完全忽略它则不行
接受复杂参数组合的另一种方法是接受对象而不是离散参数:
功能测试选项{
console.loga:,options.a;
console.logb:,options.b;
console.logc:,options.c;
}
//用法
测试{a:1,c:3} 或者确保使用所有三个参数调用函数,例如:
testing(3, undefined, 'name');
或者确保使用所有三个参数调用函数,例如:
testing(3, undefined, 'name');