for(var i=0;1<i<lt;3;i++){console.log(i)}没有打印出任何东西

请问各位大佬我想输出打印大于1小于3的i
可是为什么下面的代码却不能输出任何东西,求教

for(var i=0; 1<i<3; i++){
    console.log(i);
}
阅读 2.7k
3 个回答

典型的把数学上的表达式往编程里瞎套的问题。

数学上的 1 < i < 3 换成代码应该是 1 < i && i < 3

代码里 1 < i < 3 是从左往右计算的,先算 1 < i,结果可能会是 true(即 1) 或 false(即 0);再接着算 x < 3x 就是前面的结果)。因为 x 要么是 0 要么是 1,所以这个表达式永远成立。

所以我就纳了闷了,你这个控制台应该爆栈了才对,死循环、还永远成立,理论上你这个应该一直疯狂输出从 0 开始的所有整数才对。咋还能啥也没输出呢?

for的第二个参数是满足你填写的表达式才能进入。你这里的表达式,第一次不满足的时候就会退出了。

for (var i = 0; true; i = i++) {
    console.log(i);
}

电脑差的可以试一下,让你马上明白 语句2和语句3 不写规范是什么下场:)
所以说 语句2条件限制要写清楚,不要仅仅为ture。语句3也要让初始值改变,不然死循环自增

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题