考虑以下代码:
function foo({
item1 = 'a',
item2 = 'b',
item3 = {x: 1, y: 2}
} = {}) {
console.log(item1,item2,item3.x,item3.y)
}
如果调用,foo()
您将获得一个对象,其中包含item1,item2和item3的默认设置。您也可以拨打foo({item1: 'm', item2: 'n'})
和您的结果将包括默认item3
的{x: 1, y: 2}
。但是,如果您致电:
foo({item1: 'm', item2: 'n', item3: {x: 99}})
您将在函数范围内获得undefined
帮助。item3.y
foo
所以:
item3
在这种情况下,是否有办法获取嵌套属性的个别默认值?
这不可能。
在参数中,您尝试提取3个变量:一个item1
对象,一个item2
对象和一个item3
对象。
最重要的是,你还试图突变的item3
情况下,它不包含某些属性对象。
但是,所有破坏性工作都可以将对象的属性提取为变量-它不能使任何现有对象发生突变(没有一些不该使用的非常丑陋的古怪代码)。
如果你确定提取单个属性的item3
进入新的变数,这将是非常可能的,虽然:
function foo({
item1 = 'a',
item2 = 'b',
item3: {
x = 1,
y = 2
} = {}
} = {}) {
console.log(item1, item2, x, y)
}
foo({item1: 'm', item2: 'n'})
foo({item1: 'm', item2: 'n', item3: {x: 99}})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句