Javascript for loop产生意想不到的结果
Javascript for loop producing unexpected results
我写了下面的循环:
for (i = 10; i--; i > 5) {
console.log(i);
}
这会将其输出到控制台:
9
8
7
6
5
4
3
2
1
0
谁能告诉我为什么要这样做?
我看了一下,似乎这只是一个必须使用 for
循环的第三个参数而不是第二个参数递增的简单问题,但我对记录到控制台的数字很着迷。谁能给我一个简单的解释,为什么它会输出它所做的数字?
for loop
具有以下结构:
for (initial condition ; termination condition ; incremental condition)
在您的for loop
中,终止和增量条件是交换的(!
for (i = 10; i--; i > 5)
那是:
initial condition: i = 10
termination condition: i-- !!!
incremental condition: i > 5 ??? Does not do incremental
然后,只要终止条件返回true
(即i > 0
时(,循环就会继续。
由于初始值为 10
的 i
只有在i--
执行 10
次后才会变得0
,因此返回的结果是:
9 8 7 6 5 4 3 2 1 0
总共 10 个循环。
循环没有按预期完成,因为只有当i == 0
时才Boolean(i--)
false;简而言之,你在循环中错放了比较和动作。
问题现已更正,因此忽略: 首先,你错了 - 它不会产生你:)指示的输出。相反,它会产生以下内容:
for (i = 11; i--; i > 5) {console.log(i);}
// 10 9 8 7 6 5 4 3 2 1 0
它以 10 开头,而不是从 9 :)开始。
其次,不允许更改 for 块中语句的顺序。相反,您必须指定它们,如下所示:
for (i = 11; i > 5; i--) { console.log(i); }
// 11 10 9 8 7 6
第三(也是最重要的(:
- 你把一个起始值放在
i
;任何你想要或需要的值。 - 然后创建检查是否继续循环的条件。
- 第三条语句通常用于递增或递减
i
。
相关文章:
- JavaScript 模块模式给出了意想不到的结果
- 使用 jQuery 从 HTML 获取 id,给出意想不到的结果
- Javascript for loop产生意想不到的结果
- Javascript计算产生意想不到的结果
- 比较 JavaScript 中的浮点数会产生意想不到的结果
- 弄乱jquery产生了意想不到的结果
- 当元素相等时,Array.sort() 会产生意想不到的结果
- 在JavaScript中循环获得意想不到的结果
- Math.round与Math.ceil相比会产生意想不到的结果
- CSS旋转和平移转换会产生意想不到的结果
- 在Javascript函数中传递参数产生意想不到的结果
- 函数迭代日期数组会产生意想不到的结果
- 重新启动函数会产生意想不到的结果
- CSS为jQuery页面生成与意想不到的结果
- json字符串中的数组长度在angular ng-repeat中返回意想不到的结果
- Javascript:从对象方法内部调用回调函数,产生意想不到的结果
- Javascript: Async嵌套函数在其他Async函数中会产生意想不到的结果
- Raphael-使用transform缩放js路径-意想不到的结果
- 使用窗口.反复打开会产生意想不到的结果
- Lodash isUndefined提供了意想不到的结果