Javascript:函数中的可选参数[重复]
Posted
技术标签:
【中文标题】Javascript:函数中的可选参数[重复]【英文标题】:Javascript : optional parameters in function [duplicate] 【发布时间】:2017-01-01 14:47:19 【问题描述】:假设我有这个:
function concatenate(a, b, c)
// Concatenate a, b, and c
我该如何处理这些电话?
x = concatenate(a)
x = concatenate(a, b)
x = concatenate(a, c)
如何让我的函数知道我给它的参数?
【问题讨论】:
使用数组作为参数。 【参考方案1】:任何未填充的参数都是undefined
。
concatenate(a, c)
等价于concatenate(a, b)
。不传递第二个参数就不能传递第三个参数;但你可以明确地传递undefined
(或null
,我想):concatenate(a, undefined, c)
。
在函数中,您可以检查undefined
并替换为默认值。
或者,您可以使用对象参数来模仿关键字参数:concatenate(a: a, c: c)
。
【讨论】:
好的,这就是我的想法,谢谢【参考方案2】:只需使用arguments
类似数组的对象:
function concatenate()
var result = '';
for (var i = 0; i < arguments.length; i++)
result += arguments[i];
return result;
【讨论】:
【参考方案3】:从 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
我相信也有更好的方法,但应该可行。
【讨论】:
【参考方案4】:使用 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('');
【讨论】:
以上是关于Javascript:函数中的可选参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章