javascript默认/后备更短的解决方案

时间:2017-01-23 09:26:20

标签: javascript undefined typeof

我在我的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';
}

3 个答案:

答案 0 :(得分:2)

如果可以将任何虚假值视为undefined,则可以使用功能强大的||运算符:

var tabActive = data.tabActive || 'active';
var paneActive = data.paneActive || 'active';

...但如果""是您希望转换为"active"的有效值,那么{ {1}}是一个虚假值(虚假值的完整列表是""0NaNnullundefined,当然, "")。

答案 1 :(得分:1)

您可以包装部件以检查功能。

function option(key, value) {
    return typeof data[key] !== 'undefined' ? data[key] : value;
}

对于falsy values,例如undefinednull'',您可以使用逻辑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','有效');