在一条语句中获取多个未定义对象中的初始化对象

Get initialized object among many undefined ones in one statment

本文关键字:对象 未定义 初始化 一条 语句 获取      更新时间:2023-09-26

我有三个对象(ob1, ob2, ob3),其中只有一个是定义的,我不知道是哪一个。我想将定义对象的值存储在一个语句中的变量中,即不使用if和else。如下所示

var object = ob1 || ob2 ||ob3

你现在的方法有什么问题?这是正确的逻辑:

var obj1 = null;
var obj2 = 'hello';
var obj3 = null;
var obj4 = obj1 || obj2 || obj3;
console.log(obj4);
// hello

编辑后:我不相信有任何快速和简单的方法来获得第一个undefined值,如null合并检查,但这里有一个"一行"的尝试:

//var obj1 = undefined;
var obj2 = 'hello';
//var obj3 = undefined;
var obj4 = 
  (typeof obj1 === "undefined" ? null: obj1) ||
  (typeof obj2 === "undefined" ? null: obj2) ||
  (typeof obj3 === "undefined" ? null: obj3);
console.log(obj4);
// hello

使用相同的逻辑,实际上只是将undefined转换为null,以仍然利用单行合并。