奇怪的 JavaScript 运算符
我与操作员之间有一个小问题。我有一个数字,根据按键输入加或减。奇怪的是,运算符 += 1 和 += 11 将数字按字面意思添加到静态数字:60 变成 601 和 6011,而不是 61 和 71。
这是代码,因此请考虑静态数字是 60:
switch(e.keyCode) {
case 37:
boxID -= 1;
break;
case 38:
boxID -= 11;
break;
case 39:
boxID += 1; // Becomes 601
break;
case 40:
boxID += 11; // Becomes 6011
break;
}
I'm having a little problem with an operator. I have a number which is either plussed or subtracted depending on key input. The weird thing is that the operators += 1 and += 11 adds the numbers literally to the static number: 60 becomes 601 and 6011 instead of 61 and 71.
Here is the code, so take into consideration that the static number is 60:
switch(e.keyCode) {
case 37:
boxID -= 1;
break;
case 38:
boxID -= 11;
break;
case 39:
boxID += 1; // Becomes 601
break;
case 40:
boxID += 11; // Becomes 6011
break;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
boxId
在您的情况下是一个字符串。首先使用parseInt(boxId)
将其转换为数字或仅使用boxId << 0
-=
之所以有效,是因为它只有一个函数(使用 Math 进行减法),因此boxId
在运算之前会先转换为数字。+
在 JavaScript 中被重载,表示“字符串连接或数学加法”,因此如果boxId
是字符串,它就会执行字符串操作。boxId
is a string in your case. Convert it to a number first usingparseInt(boxId)
or justboxId << 0
The reason
-=
works is because it only has one function (subtract using Math), soboxId
is cast to a number before the operation.+
is overloaded in JavaScript to mean "string concatenation OR Math addition", so ifboxId
is a string, it does string ops.