2

在 CSS 中,您可以将诸如 font-family 之类的属性设置为以逗号分隔的事物列表,然后使用找到的第一个事物。

font-family: Fancy Font, Arial, sans-serif;

在 Javascript 中,我开始习惯于使用双条逻辑 OR 作为将变量设置为第一个可用值的方法。

var x = parameters.x || user_default.x || 123;

我发现的问题是||评估0false跳过该值。也许这是一个白日梦,但是我可以使用优雅的类似语法而不会导致这些误报吗?

4

1 回答 1

4

您不能使用简单的||运算符来执行此操作,因为在 js 中 0 是虚假的(与 一起"", undefined, null and false),因此它将使条件失败。您可以像这样编写一个简单的实用程序函数。

function tryGetValue() {
    var val;
    for (var i = 0, l = arguments.length; i < l; i++) {
        val = arguments[i];
        if (val !== undefined && val !== null) //check only for null & undefined, you can also do if (val != null) which will check for both null and undefined but it will fail in jslint validation.
        return val;
    }
}

用法:

var x = tryGetValue(parameters.x, user_default.x , 123);
于 2013-11-04T22:32:40.220 回答