JavaScript控制流逻辑问题求助:变量为0时仍执行自减?
问题分析与解决
你的问题核心是逻辑运算符的误用:
你写的判断条件 firstElementSavedIndex !== undefined || firstElementSavedIndex !== 0 使用了逻辑或(||)。逻辑或的规则是只要任意一个条件为真,整个表达式就为真。当firstElementSavedIndex等于0时,firstElementSavedIndex !== undefined这个条件是成立的(0和undefined显然不相等),所以整个if判断会返回真,进而执行自减操作,这和你的预期不符。
你实际需要的逻辑是:仅当变量既不是undefined,也不是0时才执行自减,这时候应该用逻辑与(&&)——只有两个条件同时满足,整个表达式才会为真。
修正后的代码
let firstElementSavedIndex = 1 console.log(firstElementSavedIndex) // 输出 1 firstElementSavedIndex = 0; console.log(firstElementSavedIndex) // 输出 0 // 改用逻辑与&&实现预期逻辑 if (firstElementSavedIndex !== undefined && firstElementSavedIndex !== 0) { firstElementSavedIndex -= 1; } console.log(firstElementSavedIndex) // 输出 0,符合预期
可以再验证几种场景:
- 当
firstElementSavedIndex为undefined时,firstElementSavedIndex !== undefined为假,整个条件不成立,不会执行自减 - 当
firstElementSavedIndex为非0的数值(比如3)时,两个条件都为真,会执行自减操作
内容的提问来源于stack exchange,提问作者Hendrik
相关产品推荐
相关产品推荐

