Javascript:函数

时间:2016-08-25 08:51:19

标签: javascript

我们说我有这个:

function concatenate(a, b, c) {
    // Concatenate a, b, and c
}

我该如何处理这些电话?

x = concatenate(a)

x = concatenate(a, b)

x = concatenate(a, c)

如何让我的功能知道我给它的参数?

4 个答案:

答案 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)

来自ES6 / ES2015的

你可以像在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
   }

}

我相信也有更好的方法,但应该有用。