javascript - 有条件地解构对象(javascript)
问题描述
我想检查一个参数,如果它是未定义的(或假的),我将通过解构一个对象来为其赋值
function test(x){
let obj={x:1,y:2}
if(!x){x}=obj;
}
注意: 我不想使用临时变量
if(!x){
let {temp}=obj;
x=temp
}
解决方案
您不能将值重新分配给作为参数传递给函数的变量。但是,如果它是一个对象,您可以添加/修改该对象的属性。但是重新分配它会使其失去它从参数中持有的引用。在您的情况下,如果某些内容未定义,则无法更新该引用以保存值。
例如,在您的代码中 -
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
推荐阅读
- azure - 当子项包含空数组时,Azure CosmosDB sql join 不返回结果
- c# - Entity Framework Core 同模型中的父子项,子节点返回null
- python - Python的`struct`字节大小计算
- r - 如何根据另一列的组内的最大值选择列内容。根据每个基因的最大值选择标记名称
- python - 如何在 Python 中使用 selenium 复制所有网站?
- database - AWS RDS MYSQL 导入数据库拒绝访问
- java - IllegalArgumentException:找不到命名参数
- mysql - error while running the spring boot program
- ios - 在 UITableViewCell 中的自定义 tableview 单元格下添加分隔线
- haskell - KnownNats 上的类型级归纳:重叠实例