JS for循环内console.log语句无输出是什么原因?
循环无console输出的原因
你编写的代码如下:
var line = "Stands so high "; let position = -1; for (; line[position] == " ";) { position--; console.log(position); }
没有输出的核心原因非常明确:
- JavaScript 的字符串索引规则是从0开始、从左向右正序计数,原生不支持负索引反向取字符的写法。当你传入负索引比如
-1访问字符串时,返回值是undefined,不会像部分其他编程语言那样直接拿到字符串倒数第一位的字符。 - 你写的for循环没有初始语句,第一次运行就会直接判断条件
line[position] == " "。此时初始position值为-1,line[-1]是undefined,和空格" "不相等,循环条件直接判定为不成立,循环内部的position--、console.log(position)从来没有被执行过,自然不会产生任何输出。
如果你的需求是从字符串末尾往前遍历、统计尾部连续空格的数量,需要把初始position设置为字符串最后一位的合法索引,也就是line.length - 1,修正后的代码如下:
var line = "Stands so high "; let position = line.length - 1; for (; line[position] == " ";) { position--; console.log(position); }
运行这段代码就能正常在控制台打印每次递减后的position值了。
内容的提问来源于stack exchange,提问作者VISHMA PRATIM DAS
相关产品推荐
相关产品推荐

