Я пишу свой первый JQuery-зависимый плагин.

Мой вопрос: могут ли параметры по умолчанию быть переменными, например:

var s = 400,
    m = 500,
    l = 700,
    xl = 960;

function breakpoints(s = s, m = m, l = l, xl = xl) {
  return {
    s: s,
    m: m,
    l: l,
    xl: xl
  };
};

При использовании console.log(s, m, l, xl); в моем первоначальном объявлении breakpoints() я получаю сообщение об ошибке:

s не определено

Заранее спасибо за вашу помощь.

1
DanMad 31 Авг 2017 в 15:58

3 ответа

Лучший ответ

ES6 / ES2015 поддерживает значения по умолчанию для аргументов, поэтому ваш код будет работать до тех пор, пока браузер поддерживает эти стандарты.

При этом вам нужно дать внешним / внутренним переменным разные имена, иначе они не будут доступны там, где вы пытаетесь их использовать. Попробуй это:

var s = 400,
    m = 500,
    l = 700,
    xl = 960;

function breakpoints(_s = s, _m = m, _l = l, _xl = xl) {
  return {
    s: _s,
    m: _m,
    l: _l,
    xl: _xl
  };
};

console.log(breakpoints());
4
Rory McCrossan 31 Авг 2017 в 13:01
var s = 400,
    m = 500,
    l = 700,
    xl = 960;

console.log(breakpoints(s,m,l,xl));

function breakpoints(s, m, l, xl) {
  return {
    s: s,
    m: m,
    l: l,
    xl: xl
  };
};
0
zynkn 31 Авг 2017 в 13:01

Вы можете использовать параметры по умолчанию, начиная с ES6 / ES2015. Единственная проблема заключается в том, что вам нужно переименовать ваши входные параметры.

var s = 400,
    m = 500,
    l = 700,
    xl = 960;

function breakpoints(_s = s, _m = m, _l = l, _xl = xl) {
  return {
    s: _s,
    m: _m,
    l: _l,
    xl: _xl
  };
};

console.log(breakpoints());
1
Suren Srapyan 31 Авг 2017 в 13:05