Javascript 在不重新指定命名参数的情况下调用函数

Javascript 在不重新指定命名参数的情况下调用函数,javascript,function,arguments,parameter-passing,Javascript,Function,Arguments,Parameter Passing,我有一个具有命名参数的函数 我试图从不同的事件调用相同的函数,而不覆盖先前指定的其他函数的值 我曾尝试将以前单击的按钮的值存储在变量中,但这不起作用 有没有一种方法可以一次调用函数并指定一个参数而不覆盖其他参数? 函数mainFun({ 瓦尔1, val2, val3 }) { var value1=val1, 值2=值2, value3=val3; //console.log(值1、值2、值3); 控制台日志(val1、val2、val3); } 第一个事件 第二件事 第三个事件您可以将值存

我有一个具有命名参数的函数

我试图从不同的事件调用相同的函数,而不覆盖先前指定的其他函数的值

我曾尝试将以前单击的按钮的值存储在变量中,但这不起作用

有没有一种方法可以一次调用函数并指定一个参数而不覆盖其他参数?

函数mainFun({
瓦尔1,
val2,
val3
}) {
var value1=val1,
值2=值2,
value3=val3;
//console.log(值1、值2、值3);
控制台日志(val1、val2、val3);
}
第一个事件
第二件事

第三个事件
您可以将值存储为函数的属性

函数mainFun({val1=mainFun.val1,val2=mainFun.val2,val3=mainFun.val3}){
mainFun.val1=val1;
mainFun.val2=val2;
mainFun.val3=val3;
控制台日志(val1、val2、val3);
}
第一个事件
第二件事

第三个事件
value1
value2
value3
变量是
main
函数的本地变量。每次
mainFun
执行完成后,它们都会被垃圾收集

要实现您想要实现的目标,您需要将以前的参数存储在某个地方

有许多可能性:

  • 其中之一是全局变量:
let value1、value2、value3;
功能mainFun({
瓦尔1,
val2,
val3
}) {
value1=val1 | | value1;
value2=val2 | | value2;
value3=val3 | | value3;
console.log(值1、值2、值3);
//控制台日志(val1、val2、val3);
}
第一个事件
第二件事

第三件事
如果我误解了你的问题,请纠正我。但是,如果要存储te值,则必须在函数外部声明它们。当前,值仅在函数中有效。调用函数时,将重新创建它们,函数完成后,将再次删除它们

您可以尝试在函数之外声明值,并防止如下重写:

var value1, value2, value3;
function mainFun({
  val1,
  val2,
  val3
}) {
   value1 = value1 || val1,
    value2 = value2 || val2,
    value3 = value3 || val3;
  console.log(value1, value2, value3);
}
value1 | | val1
的基本功能是说‘嘿,如果
value1
已经有了一个值,就使用这个值。如果没有,请使用
val1
。 与
value1=value1!==未定义?val1:value1
或更简单:

if (value1 === undefined) {
   value1 = val1;
} else { // obviously not needed
   value1 = value1;
}

您的功能实现必须有显著的不同;你必须在某个地方坚持这些价值观。参数实际上是函数的局部变量,因此它们是在每次函数调用时新创建的。关于如何
持久化这些值,是否存在类似的问题@这不是我的问题,只是出于好奇:这是如何/为什么工作的?不是每个onclick都会创建mainFunc的新实例吗?(编辑:这个问题是指编辑前你的答案)@Frank,不,它总是一样的功能。这些值存储在函数的属性中,因为。正是我所需要的,是尽量避免在函数的范围内或范围外使用变量。谢谢!这一点是正确的,但试图完全避免
var