3 回答
TA贡献1790条经验 获得超9个赞
使用解构赋值,在这种情况下,函数可以接受 10 个参数,但您不需要对参数进行排序,因为函数内部的值将使用键名检索。调用函数时,参数也可以按任何顺序排列。
function my_func({
param01,
param2,
param3
}) {
console.log('param01 inside my_func: ', param01, param3)
}
param01 = 0
my_func({
param01: 1,
param3: 4
})
console.log('param01 outside my_func: ', param01)
TA贡献1828条经验 获得超3个赞
我认为这里的主要问题是对 JavaScript 中参数如何工作的误解。看起来您来自以下语句的语言:
my_func(param01=1)
param0
将使用该值调用的参数传递1
给函数。
但在 JavaScript 中会发生这种情况:
param01 是你的函数之外的一个变量,你分配
1
给它该赋值表达式的结果也是
1
如此1
也作为参数传递给函数
这解释了为什么param01
1 也在你的函数之外。
在 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)
作为干净编码的旁注:您的函数应具有尽可能少的参数。如果您有很多参数,这通常表明该函数正在做太多事情,因此违反了单一职责模式,应该将其拆分为更小的函数。
TA贡献1801条经验 获得超8个赞
如果你想在外面是 0,但在里面是 1,你会过得很糟糕。
您传入的零是完全可以接受的。如果您希望零成为禁止...您可以使用默认运算符||来评估从左到右和短路的真实性值。
function my_func(param01) {
param01 = param01 || 1; // internal = 0 || 1 = 1
console.log('param01 inside my_func: ', param01) // >>> 1
}
param01 = 0 // global = 0
my_func(param01) // pass in the global 0, which IS VALID
console.log('param01 outside my_func:', param01) // >>> 0
或者,您可以传入一个对象。
function my_func(params={}) {
console.log('param01 inside my_func: ', params.param01) // >>> 1
}
param01 = 0 // global = 0
my_func({ param01 : 1 }) // pass in a 1
console.log('param01 outside my_func:', param01) // >>> 0
添加回答
举报