Javascript 如何通过参数的名称将数据传递给函数?

Javascript 如何通过参数的名称将数据传递给函数?,javascript,Javascript,我是JavaSscript的新手。基本上,我不想通过这些函数参数的位置来传递数据。当有10个或更多参数时,这是不方便的 我想通过函数中定义的参数名传递它。但是,使用此语句时有一个副作用:my_func(param01=1)。在我看来,在函数调用内部使用param01=1只表示将1传递给参数param01,在函数调用外部不会产生任何影响 这是我的代码: 函数my_func(param01){ log('param01在my_func:'中,param01) } 参数01=3 my_func(参数

我是JavaSscript的新手。基本上,我不想通过这些函数参数的位置来传递数据。当有10个或更多参数时,这是不方便的

我想通过函数中定义的参数名传递它。但是,使用此语句时有一个副作用:
my_func(param01=1)
。在我看来,在函数调用内部使用
param01=1
只表示将1传递给参数
param01
,在函数调用外部不会产生任何影响

这是我的代码:

函数my_func(param01){
log('param01在my_func:'中,param01)
}
参数01=3
my_func(参数01=1)
console.log('param01超出我的函数:',param01)
//结果是1而不是3。
使用,在这种情况下,函数可以接受10个参数,但不需要对参数排序,因为函数中的值将使用键名检索。调用函数时,参数的顺序也可以是任意的

函数my_func({
param01,
参数2,
param3
}) {
log('param01在my_func:'中,param01,param3)
}
参数01=0
我的函数({
参数01:1,,
参数3:4
})

console.log('param01在my_func:'之外,param01)
函数声明内部的参数名可以是随机的,但顺序很重要。但您可以在js中使用默认参数值,默认设置:

function my_func(param01 = 1) {
    console.log('param01 inside my_func: ', param01)
}

如果你想在外面0,但在里面1,你会有一个糟糕的时间

您传入的零是完全可以接受的。如果你想让零成为一个禁忌。。。您可以使用默认运算符
|
,它计算从左到右的真实性和短路值

函数my_func(param01){
param01=param01 | | 1;//内部=0 | | 1=1
console.log('param01在my_func:'中,param01)//>>1
}
param01=0//global=0
my_func(param01)//传入有效的全局0

log('param01在my_func:'之外,param01)//>>0
我认为这里的主要问题是对参数在JavaScript中如何工作的误解。看起来您来自这样一种语言,即:

my_func(param01=1)
将名为
param0
的参数及其值
1
传递给函数

但在JavaScript中会发生这样的情况:

  • param01是函数之外的变量,您可以为其指定
    1
  • 该赋值表达式的结果是
    1
    ,因此
    1
    也作为参数传递给函数
  • 这就解释了为什么
    param01
    也在您的函数之外

    在JavaScript中,调用函数时不指定参数名。所以这是一样的:

    my_func(1)
    
    如果要提供更多参数,您有多个选项:

  • 您只需用逗号分隔它们:
    my_func(1,2,3,4,5,6)
  • 然后,您的函数声明必须如下所示:

    function my_func(param1, param2, param3, param4, param5, param6)
    
    function my_func(params)
    
    或者您可以使用以下语法:

    这样,您可以传递任意多个参数,它们都将位于
    params
    数组中。然后可以这样访问它们:
    param[0]
    用于第一个参数,
    param[1]
    用于第二个参数,依此类推

  • 可以使用值创建数组,并将数组作为参数传递:
  • 然后,您的函数声明必须如下所示:

    function my_func(param1, param2, param3, param4, param5, param6)
    
    function my_func(params)
    

    作为干净编码的旁注:您的函数应该具有尽可能少的参数。如果你有很多参数,这通常表明函数做了太多的事情,因此违反了单一责任模式,应该分成更小的函数。

    你需要定义每个函数参数,比如上面评论中的Jenny和brk

    詹妮: my_func(1,2,3,4,5,6)

    黑色黑色: 我的函数({ 参数01:1,, 参数3:4 })

    如果不教计算机10个或更多参数是什么,则无法通过函数中定义的参数名传递10个或更多参数。


    如果我误解了您的问题,请澄清。

    如果您将
    param01=1
    传递给
    my_func
    时将其设置为
    0