奧丁計劃的學生在這里
https://github.com/TheOdinProject/javascript-exercises/tree/solutions/sumAll
我設法讓它的總和部分起作用(所以它只是第一個 if 陳述句是問題)
如果非數字作為 a 或 b 傳遞,或者如果 a 或 b 是負數,他們希望回傳“ERROR”。
我使用了下面的代碼。
首先,即使 a 和 b 都是數字,如果陳述句評估為真
他們的解決方案是使用 !Number.isInteger(a)||!Number.isInteger(b)
任何想法為什么按如下方式完成的第一個 if 陳述句不能按預期作業
如果我console.log(a)記錄號碼
const sumAll = function(a,b) {
let c =0
if((a||b)<0 || (typeof(a)||typeof(b)) !=Number){
return "ERROR"
}
else if(a<b){
for(let i=a; i<=b; i ){
c = i;
}
return c ;
}else if(a>b){for(let i=b; i<=a; i ){
c = i;
}
return c;
}
};
uj5u.com熱心網友回復:
如果要單獨檢查 a<0 和 b<0,則不能執行(a||b)<0. 原因:a||b首先被評估,你從 a 和 b 中得到第一個真值。因此,它成為一個順序問題。如果您通過了1,-2,您將得到1結果,a||b并且顯然1<0回傳 false。
function func(a,b){
console.log(a||b);
console.log((a||b)<0);
}
func(1,-2);
func(-1,2);
func(1,2);
類似的問題(typeof(a)||typeof(b)) !=Number。您應該單獨檢查((typeof(a) != 'number') || (typeof(b) != 'number')). 請注意我如何更改Number為'number'. typeof回傳注釋中提到的字串。
您需要相應地修改您的 if 條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491982.html
標籤:javascript 类型
上一篇:從表中洗掉行的功能不起作用
下一篇:如何在輪播中映射陣列以做出反應
