使用extend等缩短javascript代码

时间:2011-11-01 10:52:37

标签: javascript extend

我有这样的功能:

initGrid: function(tableGridId, url) {
        var deviceTableGridId;
        if (typeof tableGridId != "undefined"){
            deviceTableGridId = tableGridId;
        } else {
            deviceTableGridId = gridId;
        }
        var getUrl;
        if (typeof url != "undefined"){
            getUrl = url;
        } else {
            getUrl = restUrl;
        } 
..
} 

如何缩短代码?我的意思是延伸等等?

3 个答案:

答案 0 :(得分:3)

    var deviceTableGridId = tableGridId || gridId,
        getUrl = url || restUrl;

答案 1 :(得分:1)

initGrid: function(tableGridId, url) {
    tableGrid = tableGrid || gridId;
    url || (url = restUrl);
    ...
} 

默认参数值的模式是这样的

x = x || someValue;

x || (x = someValue);

请注意这两项检查,检查真值,以便它们覆盖false""0等。

如果您想要更安全的东西,请尝试

x === undefined && (x = someValue);

答案 2 :(得分:0)

当可以从可接受的输入中排除falsy值时,其他两种解决方案都很棒。但是,如果它不可能,那么一个简单的辅助函数将清理它们;

function getOrDefault(val, other) {
    if (typeof val == "undefined") {
        return other; 
    }

    return val;
}

var someVal = getOrDefault(someVar, 4);
var getUrl = getOrDefault(url, restUrl);

另一种方法是;

var someVal = someVar;

if (typeof someVal == "undefined") {
    someVal = 4;
}

var getUrl = url;

if (typeof getUrl == "undefined") {
    someVal = restUrl;
}

虽然希望你会赞成第一个解决方案。