对象参数的默认值

时间:2018-03-08 21:55:47

标签: javascript

我想创建一个以对象作为参数
的函数 例如,对象可以有三个键: x,y,z
所有这些键必须具有默认值分配

我试过了:

function f({x:x, y:y, z: z} = {x:1,y:2,z:3}) {
  return x + y + z;
}    

但我有一个问题

f() // return 6 => OK!
f({x: 2, y: 3, z: 4}) // return 9 => OK!
f({x: 2, y:3}) // return NaN (because z === undefined), I expect 8


我怎么能这样做?

2 个答案:

答案 0 :(得分:6)

您可以在解构对象时指定单个默认值:



function f({ x = 1, y = 2, z = 3 } = {}) {
  return x + y + z
}

console.log(f())
console.log(f({ x: 2, y: 3, z: 4 }))
console.log(f({ x: 2, y:3 }))




See the docs here,它描述了数组解构,但同样适用于对象。

答案 1 :(得分:0)

解构是什么意思?这是一个JavaScript表达式,它允许我们从数组,对象,映射和集合中提取数据到他们自己的变量中。它允许我们从一个对象或一个数组中的项中提取属性,一次多个。

简短形式:解构赋值语法是一个JavaScript表达式,可以将数组中的值或对象的属性解包为不同的变量。

请看一下这个简单的代码示例:

function yourFunction({
  x = 1,
  y = 2,
  z = 3
} = {}) {
  return x + y + z
}


out.innerHTML+="<br>" + yourFunction()

out.innerHTML+="<br>" + yourFunction({ x: 3, y: 3, z: 4 })

out.innerHTML+="<br>" + yourFunction({ x: 7, y: 1})
<p id="out">Results: </p>

查看文档:{​​{3}}