将几个变量的值增加一

Increase the value of several variables by one

找不到解决方案,肯定是使用了错误的搜索词。 我想增加几个变量的值。

++swd,++sdd,++smm,++syyyy; //s 表示开始工作日等
++(swd, sdd, smm, syyyy) //试过了,不行

我是初学者,正在处理日历。 谢谢。

你不能。 ++ 运算符的操作数必须是可写的——一个变量、一个对象 属性 等。(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,然后将该结果作为整个 () 表达式的结果

可以在 ES6 中使用 arguments 变量并使用 Destructuring assignment.

请参阅下面的示例:

// 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);