JavaScript: 区分前缀和后缀 Increment/Decrement
JavaScript: Dividing Pre- and Postfix Increment/Decrement
这可能是个奇怪的问题,因为我没有想到具体的例子。我正在努力学习 JavaScript,在复习一些 material 时,我开始想知道是否有可能 increment/decrement 少于一 (1)。
换句话说,如果在某种情况下您需要将变量递增为“1”以外的值。例如。将变量 i 增加 0.5 而不是 1,for (var i = 0, i < 10.5, i++/2) {...
正如我所说,我没有具体的例子或需要这样做的理由。我只是好奇如果:
- 在JavaScript内合法吗?
- 这是真实场景中可能出现的情况吗?
- 如果是这样,这是正确的做法吗?
different/better 如何通过小数 increment/decrement?
提前感谢您的回复!
与 How to increment number by 0.01 in javascript using a loop?
中遇到的问题不同
i++/2
是有效的语法,但它不会达到您的预期。
相反,表达式 i += 0.5
将 i
递增 0.5
和 return 新值:
var i = 1
var x = (i += 0.5)
console.log(i) // 1.5
console.log(x) // 1.5
+=
被称为addition assignment operator。请注意,表达式将 return 增加的值,而不是 i
更改前的值。换句话说,它的行为类似于 ++i
,而不是 i++
.
为了补充 Timo 的回答,我不建议在循环中使用小数增量,因为它会导致舍入错误:
for (var i = 0; i <= 1; i += 0.1) {
console.log(i);
}
// 0
// 0.1
// 0.2
// 0.30000000000000004
// 0.4
// 0.5
// 0.6
// 0.7
// 0.7999999999999999
// 0.8999999999999999
// 0.9999999999999999
相反,您可以使用整数增量,然后将值缩放到所需范围:
for (var i = 0; i <= 10; i++) {
console.log(i / 10);
}
// 0
// 0.1
// 0.2
// 0.3
// 0.4
// 0.5
// 0.6
// 0.7
// 0.8
// 0.9
// 1
这可能是个奇怪的问题,因为我没有想到具体的例子。我正在努力学习 JavaScript,在复习一些 material 时,我开始想知道是否有可能 increment/decrement 少于一 (1)。
换句话说,如果在某种情况下您需要将变量递增为“1”以外的值。例如。将变量 i 增加 0.5 而不是 1,for (var i = 0, i < 10.5, i++/2) {...
正如我所说,我没有具体的例子或需要这样做的理由。我只是好奇如果:
- 在JavaScript内合法吗?
- 这是真实场景中可能出现的情况吗?
- 如果是这样,这是正确的做法吗? different/better 如何通过小数 increment/decrement?
提前感谢您的回复!
与 How to increment number by 0.01 in javascript using a loop?
中遇到的问题不同i++/2
是有效的语法,但它不会达到您的预期。
相反,表达式 i += 0.5
将 i
递增 0.5
和 return 新值:
var i = 1
var x = (i += 0.5)
console.log(i) // 1.5
console.log(x) // 1.5
+=
被称为addition assignment operator。请注意,表达式将 return 增加的值,而不是 i
更改前的值。换句话说,它的行为类似于 ++i
,而不是 i++
.
为了补充 Timo 的回答,我不建议在循环中使用小数增量,因为它会导致舍入错误:
for (var i = 0; i <= 1; i += 0.1) {
console.log(i);
}
// 0
// 0.1
// 0.2
// 0.30000000000000004
// 0.4
// 0.5
// 0.6
// 0.7
// 0.7999999999999999
// 0.8999999999999999
// 0.9999999999999999
相反,您可以使用整数增量,然后将值缩放到所需范围:
for (var i = 0; i <= 10; i++) {
console.log(i / 10);
}
// 0
// 0.1
// 0.2
// 0.3
// 0.4
// 0.5
// 0.6
// 0.7
// 0.8
// 0.9
// 1