2012-03-21 2 views
0

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

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() без Params, он будет считать, что это парам true по умолчанию. Если я вызову функцию с аргументом false, например openBlock(false), она переопределит поведение по умолчанию.

Благодаря

ответ

2

Существуют различные способы, чтобы сделать это в 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 
} 
+0

Но если 'option' является' false', оно также будет установлено как 'true' ... –

+0

@FelixKling - true, updated. Обычно я использую этот шаблон в случаях, когда значения false-y должны быть заменены значением по умолчанию, а не для булевых. – nrabinowitz

+0

Большое спасибо, я думаю, это именно то, что я просил, проверит сейчас – aspirinemaga

2

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

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

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

Взгляните на Is there a better way to do optional function parameters in Javascript? для более общего подхода.

+0

спасибо за ваш подарок – aspirinemaga

+0

'openBlock (true)' будет таким же, как 'openBlock (false)' с этим кодом. –

+0

@MaxNanasy: Не уверен, что я думал, когда писал это ... – Blender