我想创建一个简单的循环函数,每次循环时加2。但是,即使我告诉我for循环在该数字达到或小于100时停止,它也会超过100并无限循环。
i ++可以正常工作:
function addTwo() {
for (i = 0; i <= 100; i++) {
console.log(i);
}
}
addTwo();
当我将其更改为i + 2时,它会崩溃:
function addTwo() {
for (i = 0; i <= 100; i + 2) {
console.log(i);
}
}
addTwo();
我希望控制台记录: 0 2 4 6 8 ... 100。
但是它无限循环并崩溃。
答案 0 :(得分:3)
[ERROR] 2019-05-05 12:59:32 [main] ClassA - error
[FATAL] 2019-05-05 12:59:32 [main] ClassA - fatal
[ERROR] 2019-05-05 12:59:32 [main] foo - Woops an error!
递增i++
。但是,i
不会更新i+2
的值。您应该将其更改为i
i += 2
答案 1 :(得分:3)
i+2
对您而言没有任何作用。 JS会对它进行评估,然后对计算出的值不执行任何操作,这意味着i
永远不会增加。
++
是一个特殊的运算符,它将其前面的变量加1。
要使循环正常工作,您必须将计算i+2
的值分配给变量i
。
for (i=0; i<=100; i = i+2) {
console.log(i);
}
或
for (i=0; i<=100; i += 2) {
console.log(i);
}
答案 2 :(得分:2)
i++
是i += 1
的简写,称为Increment Operator,但是i+2
甚至i+1
不会增加i
的值。您需要通过为i分配新值来增加它。 i = i + 2
或i += 2
。
Number是javascript中的原始类型之一,这意味着除非使用赋值运算符=
注意:您没有将let
与var
或i
一起使用,这会使i
成为全局变量。
function addTwo() {
for (let i = 0; i <= 100; i+=2) {
console.log(i);
}
}
addTwo();
答案 3 :(得分:1)
for
的第三个参数是final-expression:
在每次循环迭代结束时要评估的表达式。这发生在下一次条件评估之前。通常用于更新或递增计数器变量。
在您的情况下,您没有为i
分配任何值。您应该将其替换为以下内容:
function addTwo() {
for (i=0; i<=100; i+=2) {
console.log(i);
}
}
addTwo();
答案 4 :(得分:0)
for (i = 0; i <= 20; i++) {
console.log(i);
i++;
}
您可以将i增加两次,或者
for (i=0; i<=100; i+=2) {
console.log(i);
}
您可以使用i + = 2,它将i的值增加2倍并设置i的新值。