我在我的javascript中使用选项,如果它不存在,它会回退到默认值:
var tabActive = typeof data.tabActive !== 'undefined' ? data.tabActive : 'active';
var paneActive = typeof data.paneActive !== 'undefined' ? data.paneActive : 'active';
但是,有很多这样的行感觉有点乱/臃肿。是否有可能通过辅助功能使其更智能。
这样的东西?
function option(key, value) {
return 'Something';
}
答案 0 :(得分:2)
如果可以将任何虚假值视为undefined
,则可以使用功能强大的||
运算符:
var tabActive = data.tabActive || 'active';
var paneActive = data.paneActive || 'active';
...但不如果""
是您不希望转换为"active"
的有效值,那么{ {1}}是一个虚假值(虚假值的完整列表是""
,0
,NaN
,null
,undefined
,当然, ""
)。
答案 1 :(得分:1)
您可以包装部件以检查功能。
function option(key, value) {
return typeof data[key] !== 'undefined' ? data[key] : value;
}
对于falsy values,例如undefined
,null
,''
,您可以使用逻辑OR ||
。这将返回给定的value
。
function option(key, value) {
return data[key] || value;
}
答案 2 :(得分:0)
Nina解决方案的另一种选择。请注意,我将对象obj
作为参数传递,或者您也可以将此函数定义为对象data
的属性。
function testProp(obj, prop, val){
if(typeof obj !== 'undefined' && obj.hasOwnProperty(prop)){
obj[prop] = val;
}
}
如何调用该函数: testProp(数据,' tabActive','有效');