【发布时间】:2021-07-27 00:01:25
【问题描述】:
为什么我在条件语句中使用 !== 时下面的代码会起作用,
function factorChain(arr) {
//iterate through array
for(var i = 0; i < arr.length; i++){
if(arr[i+1] % arr[i] !== 0){
return false;
}
}
//check to see if previous element is a factor of current element
//if so, return true
return true;
}
console.log(factorChain([2, 4, 6, 7, 12]));
但是当我将它更改为 === 时,就像在第二部分代码中一样,它不起作用。
function factorChain(arr) {
//iterate through array
for(var i = 0; i < arr.length; i++){
if(arr[i+1] % arr[i] === 0){
return true;
}
}
//check to see if previous element is a factor of current element
//if so, return true
return false;
}
console.log(factorChain([2, 4, 6, 7, 12]));
【问题讨论】:
-
针对一项错误测试返回
false与针对一项正确测试返回true不同。第一个示例在返回true之前确保 所有 测试为假,如果只有 一个 测试为真,则第二个示例返回true。 -
在第二个例子中,
return true突然结束了函数,所以如果对于任何迭代,如果return true被调用,整个函数都返回 true,如果你return false同样适用,因为return立即结束函数 -
你好 Natasha,欢迎来到 SO。如果您希望您的函数充当您的评论,我会说您的第二个答案是无效的,因为一旦找到匹配的模数,它将永久返回。
-
return true 停止函数执行。所以,你的函数已经结束,它不会执行。
-
fwiw
const factorChain = arr => arr.every((x, i, a) => !(a[i+1]%x));
标签: javascript function if-statement return conditional-statements