首页 > 解决方案 > 有条件地解构对象(javascript)

问题描述

我想检查一个参数,如果它是未定义的(或假的),我将通过解构一个对象来为其赋值

function test(x){
  let obj={x:1,y:2}
  if(!x){x}=obj;
}

注意: 我不想使用临时变量

if(!x){
  let {temp}=obj;
  x=temp
}

标签: javascriptnode.jsobjectecmascript-6javascript-objects

解决方案


您不能将值重新分配给作为参数传递给函数的变量。但是,如果它是一个对象,您可以添加/修改该对象的属性。但是重新分配它会使其失去它从参数中持有的引用。在您的情况下,如果某些内容未定义,则无法更新该引用以保存值。

例如,在您的代码中 -

function test(x){
  let obj={x:1,y:2}
  x = x || obj.x
}
let x = undefined
test(x)
console.log(x)  // x is still undefined

您可以做的是保留一个对象并使用函数更新其属性

function test(a){
  let obj={x:1,y:2}
  a.x = a.x || obj.x
}
let a = {}
test(a)
console.log(a.x)  // a.x equals to 1 now


推荐阅读