簡體   English   中英

為什么即使不滿足條件,用JS編寫的Function也會返回true?

[英]Why does this Function written in JS return true even if the condition is not satisfied?

我才剛剛開始學習Javascript,而我們的第一個任務就是經典的check_if_palindrome函數。 我不明白我的代碼有什么問題。

 function palindrome(str1) { console.log(str1.split('').reverse().join('')); console.log(str1); if (str1 == str1.split().reverse().join('')) { return (true) } else { return (false) } } if (palindrome('wow442421') == true) { console.log('YES') } else { console.log('NOPE'); } 

您在第二個split()中缺少了'' 不要重復代碼,因為它容易出錯,您應該使用變量保存結果,並在必要時重新使用它:

 function palindrome(str1) { const reversed = str1.split('').reverse().join(''); console.log(str1, reversed); if (str1 === reversed){ return true } else { return false } } if (palindrome('wow442421') === true) { console.log('YES') } else{ console.log('NOPE'); } 

另外,由於str1 === str1.split('').reverse().join('')已返回布爾值,因此只需返回此值,就不需要if/else語句:

 function palindrome(str) { return str.split('').reverse().join('') === str; } if (palindrome('wow442421')) { console.log('YES') } else{ console.log('NOPE'); } 

如果要使其更簡潔,可以執行以下操作:

 const isPalindrome = str => str === [...str].reverse().join('') console.log(isPalindrome('wow44')); console.log(isPalindrome('Roma amoR')); 

您應該使用split('')而不是split()split()將在每個空格字符處split('')split('')在每個字符處分割,這就是您想要的:

 function palindrome(str1) { if (str1 == str1.split('').reverse().join('')) { return true; } else { return false; } } if (palindrome('wow442421') == true) { console.log('YES') } else { console.log('NOPE'); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM