变量自增后值未变更求助:位置变量循环自增函数异常排查
修复方案(完全匹配你的需求)
你的需求是:若pos+1不超过上限3则自增,否则置为0,下面给你几种靠谱的写法:
写法一:最易读的if-else逻辑
新手友好,一目了然:
let pos = 1; function incrementOrRotate() { if (pos + 1 > 3) { pos = 0; } else { pos++; } return pos; } // 调用结果:2 → 3 → 0 → 1 → 2
写法二:简化的三元表达式
比if-else更紧凑,加括号后可读性也不差:
let pos = 1; function incrementOrRotate() { pos = (pos + 1) > 3 ? 0 : pos + 1; return pos; }
写法三:取模运算(循环场景最优解)
因为你的取值范围是0-3,用取模可以一行搞定循环逻辑:
let pos = 1; function incrementOrRotate() { pos = (pos + 1) % 4; return pos; }
如果你的预期是返回修改前的pos值(比如第一次调用要返回1而不是2),那只要先保存当前值再修改就行:
let pos = 1; function incrementOrRotate() { const current = pos; pos = (pos + 1) > 3 ? 0 : pos + 1; return current; } // 调用结果完全匹配你的预期:1 → 2 → 3 → 0 → 1
内容的提问来源于stack exchange,提问作者Mrs.H
相关产品推荐
相关产品推荐

