Сокращение кода javascript с помощью extend или etc

#javascript #extend

#javascript #расширить

Вопрос:

У меня есть такая функция:

 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;
        } 
..
} 
 

Как я могу написать этот код короче? Я имею в виду с помощью extend или etc.?

Ответ №1:

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

Ответ №2:

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

Шаблоны для значений параметров по умолчанию как таковые

x = x || someValue;

и

x || (x = someValue);

Обратите внимание на обе проверки, проверьте истинность значений, чтобы они переопределяли false , "" , 0 , и т.д.

Если вы хотите что-то более безопасное, попробуйте

x === undefined amp;amp; (x = someValue);

Ответ №3:

Оба других решения хороши, когда 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;
}
 

Хотя, надеюсь, вы предпочтете первое решение.