Увеличьте значение нескольких переменных на одну - PullRequest
0 голосов
/ 08 января 2019

Не удалось найти решение, наверняка использовались неправильные условия поиска. Я хочу увеличить значение нескольких переменных.

++ swd, ++ sdd, ++ smm, ++ syyyy; // s для начального дня недели и т. д.
++ (swd, sdd, smm, syyyy) // пробовал, не работает

Я новичок и работаю над календарем. Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это может быть сделано в ES6 с использованием переменной arguments и использованием Разрушающего присваивания .

См. Мой пример ниже:

// Perform "callback" on all "args" and return
function performOnAll(callback, ...args) {
  for (const key in args) {
    if (args.hasOwnProperty(key)) {
      args[key] = callback(args[key]);
    }
  }
  return args;
}
// TEST
// Initial values
var swd = 10,
  sdd = 11,
  smm = 12,
  syyyy = 13;
//Perform assignment
[swd, sdd, smm, syyyy] = performOnAll(function action(a) {
  return a + 10;
}, swd, sdd, smm, syyyy);
// Output result
console.log(swd, sdd, smm, syyyy);
0 голосов
/ 08 января 2019

Вы не можете. Операнд оператора ++ должен быть чем-то доступным для записи & mdash; переменная, свойство объекта и т. д. Результат (swd, sdd, smm, syyyy) недоступен для записи (и если бы это было так, к нему нельзя было бы применить ++) .¹

Просто делайте то, что вы делаете (хотя я бы не использовал , для их разделения, я бы использовал ;).

Если бы это были свойства объекта ...

let obj = {
    swd: 0,
    sdd: 1,
    smm: 2,
    syyyy: 3
};

... вы можете просматривать свойства объекта следующим образом:

for (const key of Object.keys(obj)) {
    ++obj[key];
}

... или в ES5

Object.keys(obj).forEach(function(key) {
    ++obj[key];
});

... но это намного сложнее и может быть труднее читать.


¹ (swd, sdd, smm, syyyy) оценивается так:

  • Оценить swd, затем выбросить результат
  • Оценить sdd, затем выбросить результат
  • Оценить smm, затем выбросить результат
  • Оцените syyyy, затем примите этот результат как результат общего () выражения
...