【发布时间】:2019-10-17 20:31:09
【问题描述】:
在 for 循环迭代期间,如果在 if 语句中检测到非字母字符,则 i 不会递增。
如果字符是非字母字符,则非数字函数返回 true,否则返回 false。当我在 for 循环中测试代码时,我让控制台打印出 i 的值。每当代码到达非字母字符时,我都不会递增,因此会创建一个无限的 for 循环。
function isUpper(str){
for(i = 0; i < str.length; i++){
if(str.charAt(i) == str.charAt(i).toUpperCase()){
if(!nonnumeric(str.charAt(i))){
return true;
};
};
};
return false;
};
如果字符串中有大写字符,我希望它返回 true。如果字符串中没有大写字符,我希望它返回 false。
【问题讨论】:
-
我认为您误解了结果。您能否说明您是如何得出正在发生无限循环的结论的?所说的 for 循环中的任何内容都不会阻止
i在不停止循环的情况下递增。 -
循环将运行 N 次,其中 N 是 str 的长度。要制作这个 inf,您需要在计算每个迭代 str.length 时以 >= 迭代速度的速率添加到字符串中。
-
如果字符是非字母字符而不是非数字字符,为什么
nonnumeric()返回 true? -
我看到你没有声明
i这里有var或let;nonnumeric或其他东西是否有可能覆盖您的全局i变量,也许?也许摆出你的nonnumeric功能会帮助我们。 -
我不敢相信我犯了这么愚蠢的错误。 @Jacob 感谢您指出这一点。问题是我忘记用
let声明i并且非数字覆盖了全局变量i。