有条件地解构对象(javascript)

时间:2018-12-12 13:53:14

标签: javascript node.js object ecmascript-6 javascript-objects

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

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

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

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

3 个答案:

答案 0 :(得分:0)

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

例如,在您的代码中-

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

答案 1 :(得分:-1)

您是要分配一个未定义或为false的默认值?

x = x || {};

答案 2 :(得分:-1)

使用函数中的x值覆盖并按以下代码返回它

function test(x){
   let obj={x:1,y:2}
   if(!x)x=obj;
   if(x.hasOwnProperty('x')){
   return x.x;
   }
   else{
    return "object does not have property x";
}
}
console.log(test(undefined));    //  {x:1,y:2}
console.log(test(false));    //  {x:1,y:2}
console.log(test(true));    //  true