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

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


我想通过函数中定义的参数名称来传递它。但是,当我使用此语句时有一个副作用:my_func(param01=1). 在我看来,函数调用内部的用法param01=1,仅代表将1传递给参数param01,在函数调用之外没有任何影响。


这是我的代码:


function my_func(param01) {

    console.log('param01 inside my_func: ', param01)

}


param01 = 3

my_func(param01=1)

console.log('param01 outside my_func: ', param01)

// the result is 1 instead of 3.

我的问题是:通过函数参数的名称将数据传递给函数的正确方法是什么?


月关宝盒
浏览 155回答 3
3回答

富国沪深

使用解构赋值,在这种情况下,函数可以接受 10 个参数,但您不需要对参数进行排序,因为函数内部的值将使用键名检索。调用函数时,参数也可以按任何顺序排列。function my_func({  param01,  param2,  param3}) {  console.log('param01 inside my_func: ', param01, param3)}param01 = 0my_func({  param01: 1,  param3: 4})console.log('param01 outside my_func: ', param01)

子衿沉夜

我认为这里的主要问题是对 JavaScript 中参数如何工作的误解。看起来您来自以下语句的语言:my_func(param01=1)param0将使用该值调用的参数传递1给函数。但在 JavaScript 中会发生这种情况:param01 是你的函数之外的一个变量,你分配1给它该赋值表达式的结果也是1如此1也作为参数传递给函数这解释了为什么param011 也在你的函数之外。在 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]对于第二个参数,依此类推。您可以使用您的值创建一个数组并将该数组作为参数传递:const parameters = [1, 2, 3, 4, 5 ,6];my_func(parameters)您的函数声明必须如下所示:function my_func(params)作为干净编码的旁注:您的函数应具有尽可能少的参数。如果您有很多参数,这通常表明该函数正在做太多事情,因此违反了单一职责模式,应该将其拆分为更小的函数。

蝴蝶刀刀

如果你想在外面是 0,但在里面是 1,你会过得很糟糕。您传入的零是完全可以接受的。如果您希望零成为禁止...您可以使用默认运算符||来评估从左到右和短路的真实性值。function my_func(param01) {  param01 = param01 || 1; // internal = 0 || 1 = 1  console.log('param01 inside my_func: ', param01) // >>> 1}param01 = 0 // global = 0my_func(param01) // pass in the global 0, which IS VALIDconsole.log('param01 outside my_func:', param01) // >>> 0或者,您可以传入一个对象。function my_func(params={}) {  console.log('param01 inside my_func: ', params.param01) // >>> 1}param01 = 0 // global = 0my_func({ param01 : 1 }) // pass in a 1console.log('param01 outside my_func:', param01) // >>> 0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript