Значения аргументов по умолчанию в функциях 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;
 }
}