猿问

js 对象取值遇到undefinded时,如何停止继续取值?

问题如下:

对方 正常情况下 给我传递了一个对象,接收后如下


var val={

    o1:{

        key:1

    },

    o2:{

        key:2

    }

}

但出现错误时,传回默认值,我接收后如下


var val={

    o2:{

        key:2

    }

}

我想要的效果就是,如果出现错误时取传给我的默认值,,这么写觉得比较优雅[但报错]


var key=val.o1.key || val.o2.key;//undefined

但我需要判定o1是否undefined,如下


if(typeof val.o1 === 'undefined'){

    key=val.o2.key;

}else{

    key=val.o1.key;

}


有没有什么有效但优雅的方法可以在 var key=val.o1.key || val.o2.key;时,o1未定义则直接去后面的值,而不报错?


有只小跳蛙
浏览 771回答 5
5回答

蛊毒传说

var key = (val.o1 || val.o2 || {}).key || null;

精慕HU

兄弟你哪个if语句压根不会走,typeof一个对象 返回值应该为object吧 。你可以用instanceof

犯罪嫌疑人X

Object.values(val)[0]['key']
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答