Некоторые языки, такие как Ruby, CoffeeScript и предстоящая версия JavaScript, могут объявить параметры по умолчанию при определении функции, например:
Кода -копия выглядит следующим образом:
Функция myfunc (param1, param2 = "вторая строка") {
console.log (param1, param2);
}
// выходы: «первая строка» и «вторая строка»
myfunc ("первая строка");
// выходы: "Первая строка" и "Версия 2 Строки 2"
myfunc ("первая строка", "вторая строка версия 2");
К сожалению, в текущей версии JavaScript это письмо недействительным. Итак, что мы можем сделать для реализации таким образом, используя наш существующий набор инструментов?
Самое простое решение такого:
Кода -копия выглядит следующим образом:
Функция myfunc (param1, param2) {
if (param2 === не определен) {
param2 = "вторая строка";
}
console.log (param1, param2);
}
// выходы: "Первая строка" и "Версия 2 Строки 2"
myfunc ("первая строка", "вторая строка версия 2");
Дело в том, что пропущенный параметр всегда «неопределен» при обращении. Если у вас есть только один параметр, это хорошее решение, что, если бы в то время было несколько?
Если у вас есть более одного параметра, вы можете использовать объект в качестве параметра, который имеет то преимущество, что каждый параметр имеет четкое именование. Если вы передаете параметр объекта, вы можете объявить значение по умолчанию таким же образом.
Кода -копия выглядит следующим образом:
Функция myfunc (paramobject) {
var defaultParams = {
PARAM1: «Первая строка»,
PARAM2: «Вторая строка»,
PARAM3: "Третья строка"
};
var finalparams = deflaultParams;
// мы перечитываем каждое свойство параметра
for (var key in paramobject) {
// Если текущее имущество не было унаследовано, продолжалось
if (paramobject.hashownproperty (key)) {
// Если текущее свойство определено,
// Добавить его в FinalParams
if (paramobject [key]! == undefined) {
FinalParams [Key] = ParamoBject [Key];
}
}
}
console.log (finalparams.param1,
finalparams.param2,
finalparams.param3);
}
myfunc ({param1: "моя собственная строка"});
Это немного неуклюже. Если вы много используете этот метод, вы можете написать функцию инкапсуляции. К счастью, во многих библиотеках сейчас есть связанные методы, такие как метод расширения в JQUERY и подчеркивание.
В следующем используется метод расширения подчеркивания для достижения того же результата выше:
Кода -копия выглядит следующим образом:
Функция myfunc (paramobject) {
var defaultParams = {
PARAM1: «Первая строка»,
PARAM2: «Вторая строка»,
PARAM3: "Третья строка"
};
var finalparams = _.extend (defaultParams, paramobject);
console.log (finalparams.param1,
finalparams.param2,
finalparams.param3);
}
// выходы:
// "моя собственная строка" и "вторая строка" и "третья строка"
myfunc ({param1: "моя собственная строка"});
Вот как вы можете получить параметры по умолчанию в текущей версии JavaScript.
Критика и исправление неподходящих аспектов в статье приветствуются.