Функция Javascript с необязательными значениями по умолчанию - PullRequest
0 голосов
/ 21 марта 2012

Я не могу найти похожую проблему, наверное, потому что я не могу найти правильный вопрос / ответ. Я хочу создать функцию, которая будет использовать значения по умолчанию, если при вызове функции не переданы аргументы, если это так, замените значения по умолчанию значениями, переданными в параметрах функции. Например:

function openBlock(false){
  // if parameter was passed with 'false' value, it will do this

  // else it will put automatically a 'true' value to an function's argument
}

Таким образом, если вызвать функцию openBlock() без каких-либо параметров, она будет считать, что это параметр true по умолчанию. Если я вызову функцию с аргументом false, например openBlock(false), она переопределит поведение по умолчанию.

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Существуют различные способы сделать это в Javascript, хотя ни один из них не встроен. Самый простой шаблон:

function(option) {
    option = option || "default";
    // do stuff
}

Но, как отмечает @FelixKling, это не будет работать в вашем случае, так какзаменит любое значение false-y (включая явную установку аргумента на false) значением по умолчанию.Для логических аргументов, которые вы хотите использовать по умолчанию true, вам необходимо:

function(option) {
    // default to "true"
    option = option !== undefined ? option : true;
    // do stuff
}

Когда вы имеете дело с более чем одним или двумя аргументами, лучшим вариантом часто является использование одного optionsили config аргумент и проверьте наличие свойств:

function(options) {
    var arg1 = option.arg1 !== undefined ? false : true;
    var arg2 = option.arg2 || "default";
    // do stuff
}

Если вы используете библиотеку, такую ​​как jQuery или подчеркивание, метод extend позволяет довольно легко установить объект по умолчаниюзначения, а затем перезаписать их предоставленными значениями, если они существуют:

function(options) {
    var defaults = {
        arg1: true,
        arg2: "default"
    };
    options _.extend(defaults, options);
    // do stuff
}
2 голосов
/ 21 марта 2012

В JavaScript не реализованы параметры по умолчанию, как в других языках.

Вам нужно будет их реализовать самостоятельно:

function openBlock(argument) {
  argument = typeof argument !== 'undefined';
}

Взгляните на Есть ли лучший способ сделать необязательные параметры функций в Javascript? для более общего подхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...