Javascript函数(params)和函数({params}),一个函数两种调用类型

Javascript函数(params)和函数({params}),一个函数两种调用类型,javascript,function,object,parameters,arguments,Javascript,Function,Object,Parameters,Arguments,有没有办法编写一个函数,以便像这样以两种方式调用它 我知道如何在函数中写入两个params结构,但我想知道如何在单个函数中验证两个params结构 functionToCall(1, 'value', true); 及 您可以检查第一个参数,如果它是一个对象,并对缺少的参数进行解构 如果第一个参数是一个普通类型的对象,或者该类型是任何类型,则此方法不起作用。 函数调用函数(参数1、参数2、参数3){ if(param1&&typeof param1==='object'){ ({param1

有没有办法编写一个函数,以便像这样以两种方式调用它

我知道如何在函数中写入两个params结构,但我想知道如何在单个函数中验证两个params结构

functionToCall(1, 'value', true);


您可以检查第一个参数,如果它是一个对象,并对缺少的参数进行解构

如果第一个参数是一个普通类型的对象,或者该类型是任何类型,则此方法不起作用。

函数调用函数(参数1、参数2、参数3){
if(param1&&typeof param1==='object'){
({param1,param2,param3}=param1);
}
console.log(param1、param2、param3);
}
函数调用(1,‘值’,真);

functionToCall({param1:1,param2:'value',param3:true})您可以检查第一个参数,如果它是一个对象,并对缺少的参数进行解构

如果第一个参数是一个普通类型的对象,或者该类型是任何类型,则此方法不起作用。

函数调用函数(参数1、参数2、参数3){
if(param1&&typeof param1==='object'){
({param1,param2,param3}=param1);
}
console.log(param1、param2、param3);
}
函数调用(1,‘值’,真);

functionToCall({param1:1,param2:'value',param3:true})您可以使用rest参数获取参数数组。如果
args
数组的长度为1,请使用对象分解。如果不是1,则在
args
数组上使用数组分解

const functionToCall=(…args)=>{
设param1,param2,param3;
如果(args.length==1)({param1,param2,param3}=args[0]);
else([param1,param2,param3]=args);
console.log(param1、param2、param3);
};
函数调用(1,‘值’,真);
函数调用({
参数1:1,
参数2:'值',
参数3:对

});您可以使用rest参数获取参数数组。如果
args
数组的长度为1,请使用对象分解。如果不是1,则在
args
数组上使用数组分解

const functionToCall=(…args)=>{
设param1,param2,param3;
如果(args.length==1)({param1,param2,param3}=args[0]);
else([param1,param2,param3]=args);
console.log(param1、param2、param3);
};
函数调用(1,‘值’,真);
函数调用({
参数1:1,
参数2:'值',
参数3:对

});例如,您可以这样做

const functionToCall = () => {
  val [param1, param2, param3] = arguments.length == 1 
    ? Object.entries(arguments[0]).map(v => v[1]) 
    : arguments     
}

例如,你可以这样做

const functionToCall = () => {
  val [param1, param2, param3] = arguments.length == 1 
    ? Object.entries(arguments[0]).map(v => v[1]) 
    : arguments     
}

您是否希望第一个参数的类型与对象的类型不同?是的,但不应该。@Bergi-您的原始答案不包含“不应该”部分。请详细说明。@Oridori这里有两个结构,做同样的事情,这很混乱。一个人应该选择一个并坚持它,而不是计划两者都提供。KISS原则:)你期望第一个参数的类型与对象的类型不同吗?是的,但不,你不应该。Bergi-你最初的答案不包含“不应该”部分。请详细说明。@Oridori这里有两个结构,做同样的事情,这很混乱。一个人应该选择一个并坚持下去,而不是计划两者兼而有之。接吻原则:)