Codewars题目报错排查:isDivisible函数返回空而非预期值
解决isDivisible函数返回空值的问题
嘿,我一眼就看出问题大概率出在哪了——你写的函数没有正确返回布尔值,导致调用后得到的是undefined(也就是你说的“空值”)。
咱们先复盘下题目的核心要求:函数isDivisible(n, x, y)需要判断n是否能同时被x和y整除,返回true或false。如果函数里只有判断逻辑但没写return语句,JS默认就会返回undefined,这就是你遇到的问题根源。
常见错误写法示例
比如你可能写了类似这样的代码:
function isDivisible(n, x, y) { // 只有判断,但没返回结果 if (n % x === 0 && n % y === 0) { true; } else { false; } }
或者更简洁但同样错误的写法:
function isDivisible(n, x, y) { // 直接写表达式,但没返回 n % x === 0 && n % y === 0; }
这两种写法都不会把判断结果返回给调用者,所以自然得到空值。
正确的解决方案
其实逻辑很简单,只要把判断结果通过return返回就行,有两种常用写法:
写法1:完整的if-else返回
function isDivisible(n, x, y) { if (n % x === 0 && n % y === 0) { return true; } else { return false; } }
写法2:直接返回表达式结果(更简洁)
因为n % x === 0 && n % y === 0这个逻辑表达式本身就会返回布尔值true或false,所以可以直接把它作为返回值:
function isDivisible(n, x, y) { return n % x === 0 && n % y === 0; }
验证示例
- 调用
isDivisible(12,2,6):12能被2和6整除,表达式返回true,符合预期; - 调用
isDivisible(100,5,3):100不能被3整除,表达式返回false,完美解决你遇到的“预期false却得到空值”的问题。
另外题目说明所有输入都是正非零整数,所以咱们不用处理除以0的异常情况,这个逻辑完全适用。
内容的提问来源于stack exchange,提问作者intercoder
相关产品推荐
相关产品推荐

