Javascript 对象赋值产生未定义的变量

Javascript 对象赋值产生未定义的变量,javascript,Javascript,所以我以前使用过Object.assign(),并取得了一些成功。然而,我现在确实有问题。我有一个目标: let stats = { rounds: 0, userHits: 0, userDmgDelt: 0, userDmgTaken: 0, userCrits: 0, userMiss: 0, userDodge: 0, mobHits: 0, mobDmgDelt: 0,

所以我以前使用过
Object.assign()
,并取得了一些成功。然而,我现在确实有问题。我有一个目标:

let stats = {
      rounds: 0,
      userHits: 0,
      userDmgDelt: 0,
      userDmgTaken: 0,
      userCrits: 0,
      userMiss: 0,
      userDodge: 0,
      mobHits: 0,
      mobDmgDelt: 0,
      mobDmgTaken: 0,
      mobCrits: 0,
      mobMiss: 0,
      mobDodge: 0,
    };
然后我尝试这样做:

stats = Object.assign(stats, {
    userMiss: userMiss++,
});
我认为在函数中使用对象将根据其旧值(即0)定义它。我想避免使用长的积木
stats.Stat+=1
等等。

您应该使用
++stats.userMiss
来更新
userMiss

let stats={
轮次:0,
用户点击数:0,
userDmgDelt:0,
userDmgTaken:0,
userCrits:0,
userMiss:0,
userDodge:0,
点击率:0,
mobDmgDelt:0,
mobDmgTaken:0,
暴民:0,
小姐:0,
暴徒:0,
};
stats=Object.assign(stats{
userMiss:++stats.userMiss
});

console.log(stats)
您应该使用
++stats.userMiss
来更新
userMiss

let stats={
轮次:0,
用户点击数:0,
userDmgDelt:0,
userDmgTaken:0,
userCrits:0,
userMiss:0,
userDodge:0,
点击率:0,
mobDmgDelt:0,
mobDmgTaken:0,
暴民:0,
小姐:0,
暴徒:0,
};
stats=Object.assign(stats{
userMiss:++stats.userMiss
});

console.log(stats)
userMiss
是在对象
stats
中定义的键。 因此,要访问该属性,您需要编写
stats.userMiss

stats = Object.assign(stats, {
userMiss: stats.userMiss++,

}))

userMiss
是在对象
stats
中定义的键。 因此,要访问该属性,您需要编写
stats.userMiss

stats = Object.assign(stats, {
userMiss: stats.userMiss++,

}))

userMiss
不是独立变量,因此表达式
userMiss++
不起作用。如果要使用Object.assign,则必须使用

let stats={
轮次:0,
用户点击数:0,
userDmgDelt:0,
userDmgTaken:0,
userCrits:0,
userMiss:0,
userDodge:0,
点击率:0,
mobDmgDelt:0,
mobDmgTaken:0,
暴民:0,
小姐:0,
暴徒:0,
};
stats=Object.assign(stats{
userMiss:stats.userMiss+1,
});

console.log(stats)
userMiss
不是独立变量,因此表达式
userMiss++
不起作用。如果要使用Object.assign,则必须使用

let stats={
轮次:0,
用户点击数:0,
userDmgDelt:0,
userDmgTaken:0,
userCrits:0,
userMiss:0,
userDodge:0,
点击率:0,
mobDmgDelt:0,
mobDmgTaken:0,
暴民:0,
小姐:0,
暴徒:0,
};
stats=Object.assign(stats{
userMiss:stats.userMiss+1,
});

console.log(stats)IMHO,这就是你想要做的:

let stats={
回合数:0,用户命中数:0,用户DMGDELT:0,用户DMGTAKEN:0,用户暴击数:0,用户未命中数:0,用户闪避数:0,移动命中数:0,移动闪避数:0,移动闪避数:0,
};
stats=Object.assign(stats{
userMiss:++stats.userMiss
});

console.log(stats)
IMHO,这就是您要做的:

let stats={
回合数:0,用户命中数:0,用户DMGDELT:0,用户DMGTAKEN:0,用户暴击数:0,用户未命中数:0,用户闪避数:0,移动命中数:0,移动闪避数:0,移动闪避数:0,
};
stats=Object.assign(stats{
userMiss:++stats.userMiss
});

console.log(stats)
应该是
++stats.userMiss
没有
对象。分配
,然后(这是OP想要避免的)。那应该是
++stats.userMiss没有
对象。分配
,然后(这是OP想要避免的)。那些长块看起来像什么?什么样的情况会导致所有这些数据同时增加?那些长的方块看起来会是什么样子?什么样的情况会导致所有这些数据同时增加?我的意思是我可以。
stats.
部分对我来说应该是显而易见的。有人告诉我,使用Object.assign是处理所有这些问题的好方法。但它们可能意味着在处理会话对象时。无论如何,谢谢!我是说我可以。
stats.
部分对我来说应该是显而易见的。有人告诉我,使用Object.assign是处理所有这些问题的好方法。但它们可能意味着在处理会话对象时。无论如何,谢谢!