我想检查一个参数,如果它是未定义的(或假的),我将通过解构一个对象来为其分配一个值
function test(x){
let obj={x:1,y:2}
if(!x){x}=obj;
}
注释: 我不想使用临时变量
if(!x){
let {temp}=obj;
x=temp
}
答案 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