将几个变量的值加一

时间:2019-01-08 08:11:59

标签: javascript increment

无法确定解决方案,请确保使用错误的搜索词。 我想增加几个变量的值。

++ swd,++ sdd,++ smm,++ syyyy; // s是星期几等。
++(swd,sdd,smm,syyyy)//尝试过此方法,不起作用

我是初学者,正在研究日历。 谢谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

可以在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);