Javascript设置变量结果或什么都没有

时间:2013-02-13 10:47:13

标签: javascript if-statement bit-manipulation

查看javascript评论

var SearchResult = {
    googleApiKey: "",
    googleUrl: "https://www.googleapis.com/shopping/search/v1/public/products?key={key}&country={country}&q={query}&alt=atom",
    country: "UK"
    Query: function( args )
    {     
        // Is there a way to do this in a less messy way?
        args.googleApiKey ? : this.googleApiKey = args.googleApiKey : null;
        args.country? : this.country = args.country: null;
    }
}

基本上,如果有人为我的对象属性提供了一个新值,我希望它设置它,否则只需继续使用提供的默认值。

我知道按位运算符有助于选项选择,但我不知道如何将其移植到javascript中?

2 个答案:

答案 0 :(得分:4)

args.googleApiKey = args.googleApiKey || this.googleApiKey;
args.country = args.country || this.country;

不确定我理解你的问题;

答案 1 :(得分:3)

在JavaScript中,您可以使用以下内容:

// thingYouWantToSet = possiblyUndefinedValue || defaultValue;
this.googleApiKey = args.googleApiKey || '';

使用它的警告是,如果第一个值是零或空字符串,您将最终使用默认值,这可能不是您想要的。 e.g。

var example = '';
var result = example || 'default';

虽然设置了示例,但最终会使用'default'字符串。如果这会导致问题,请切换到:

(typeof args.googleApiKey === 'undefined') 
    ? this.googleApiKey = 'default'
    : this.googleApiKey = args.googleApiKey;

如果你经常重复一遍,你可以使用辅助功能使这个更干净。

var mergedSetting = function (setting, default) {
    return (typeof setting === 'undefined') ? default : setting;
}

this.googleApiKey = mergedSetting(args.googleApiKey, 'default value');