我们说我有这个:
function concatenate(a, b, c) {
// Concatenate a, b, and c
}
我该如何处理这些电话?
x = concatenate(a)
x = concatenate(a, b)
x = concatenate(a, c)
如何让我的功能知道我给它的参数?
答案 0 :(得分:7)
任何未填充的参数都是undefined
。
concatenate(a, c)
相当于concatenate(a, b)
。你不能传递第三个参数而不传递第二个参数;但您可以明确地传递undefined
(或null
,我猜)concatenate(a, undefined, c)
。
在该功能中,您可以检查undefined
并替换为默认值。
或者,您可以使用object参数来模仿关键字参数:concatenate({a: a, c: c})
。
答案 1 :(得分:3)
只需使用arguments
类似数组的对象:
function concatenate() {
var result = '';
for (var i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
答案 2 :(得分:2)
使用ES6 rest parameters
语法获取参数数组。然后只需join
其项目来检索连接的字符串。
concatenate(a);
concatenate(a, b);
concatenate(a, c);
function concatenate(...args){
// for old browsers
// `...args` is an equivalent of `[].slice.call(arguments);`
return args.join('');
}
答案 3 :(得分:1)
你可以像在php中那样做:
function concatenate(a, b = false, c = false) {
// Concatenate a, b, and c
}
对于旧版本,您可以执行以下操作:
function concatenate(a, b, c) {
if( typeof b !== 'undefined' && typeof c !== 'undefined') {
// code when a, b and c are defined
} else if ( typeof b !== 'undefined' && typeof c == 'undefined') {
// code when a and b are defined
} else {
// code
}
}
我相信也有更好的方法,但应该有用。