Значения аргументов по умолчанию в функциях JavaScript
Возможный дубликат:
Как сделать значение по умолчанию для параметра функции javascript
в PHP:
function func($a = 10, $b = 20){
// if func() is called with no arguments $a will be 10 and $ b will be 20
}
Как вы можете сделать это в JavaScript?
Я получаю сообщение об ошибке, если попытаюсь назначить значения в аргументах функции
отсутствует) после формальных параметров
Ответы
Ответ 1
В javascript вы можете вызвать функцию (даже если она имеет параметры) без параметров.
Итак, вы можете добавить значения по умолчанию, например:
function func(a, b){
if (typeof(a)==='undefined') a = 10;
if (typeof(b)==='undefined') b = 20;
//your code
}
а затем вы можете вызвать его как func();
для использования параметров по умолчанию.
Здесь тест:
function func(a, b){
if (typeof(a)==='undefined') a = 10;
if (typeof(b)==='undefined') b = 20;
alert("A: "+a+"\nB: "+b);
}
//testing
func();
func(80);
func(100,200);
Ответ 2
ES2015 и далее:
Из ES6/ES2015 у нас есть параметры по умолчанию в спецификации языка. Поэтому мы можем просто сделать что-то простое, например,
function A(a, b = 4, c = 5) {
}
или в сочетании с деструктурирование ES2015,
function B({c} = {c: 2}, [d, e] = [3, 4]) {
}
Подробное объяснение,
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters
Параметры функции по умолчанию позволяют инициализировать формальные параметры со значениями по умолчанию, если передано no value или undefined.
Pre ES2015:
Если вы собираетесь обрабатывать значения НЕ Числа, Строки, Логические, NaN
или null
, вы можете просто использовать
(Итак, для объектов, массивов и функций, которые вы планируете никогда не отправлять null
, вы можете использовать)
param || DEFAULT_VALUE
например,
function X(a) {
a = a || function() {};
}
Хотя это выглядит просто и любопытно, это ограничительно и может быть анти-шаблоном, потому что ||
работает со всеми значениями ложности (""
, null
, NaN
, false
, 0
) тоже, что делает этот метод невозможным присвоить параметру значение фальши, переданное в качестве аргумента.
Итак, для того, чтобы обрабатывать только значения undefined
явно, предпочтительным подходом было бы,
function C(a, b) {
a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
Ответ 3
Вам нужно проверить, соответствует ли аргумент undefined:
function func(a, b) {
if (a === undefined) a = "default value";
if (b === undefined) b = "default value";
}
Также обратите внимание, что этот вопрос был ответил до.
Ответ 4
Я никогда не видел, чтобы это было сделано в JavaScript. Если вы хотите использовать функцию с дополнительными параметрами, которые получают назначенные значения по умолчанию, если параметры опущены, вот как это сделать:
function(a, b) {
if (typeof a == "undefined") {
a = 10;
}
if (typeof b == "undefined") {
a = 20;
}
alert("a: " + a + " b: " + b);
}
Ответ 5
function func(a, b)
{
if (typeof a == 'undefined')
a = 10;
if (typeof b == 'undefined')
b = 20;
// do what you want ... for example
alert(a + ',' + b);
}
в сокращении
function func(a, b)
{
a = (typeof a == 'undefined')?10:a;
b = (typeof b == 'undefined')?20:b;
// do what you want ... for example
alert(a + ',' + b);
}
Ответ 6
Вы не можете добавлять значения по умолчанию для параметров функции. Но вы можете это сделать:
function tester(paramA, paramB){
if (typeof paramA == "undefined"){
paramA = defaultValue;
}
if (typeof paramB == "undefined"){
paramB = defaultValue;
}
}