簡體   English   中英

為什么這段代碼返回 true 而不是 false

[英]why is this code returning true instead of false

這是代碼:

const str = "asdfcvb";
const result = str.split("").every((e) => {
    return e==='a'||'b'});
console.log(result);

我希望 str.split("") 返回一個數組,並且每個方法都會檢查數組中的每個元素是否等於'a'或'b',這應該返回false,但它返回true

因為e==='a'||'b'意思是((e==='a')||'b')

e !== 'a'情況下,它會返回在 Javascript 中為真值'b' ,因此every方法都從每個術語中獲取真值,然后結果為真。

您可以使用以下內容來實現您想要的

const result = str.split("").every((e) => {
    return (e==='a') || (e==='b')
});

您不能從條件的第二部分省略=== 現在你說的是 return e === 'a''b' e不等於'a'時,它返回'b' 這是真的,當變成 boolean 時,它變成了真的。 在瀏覽器中運行:

'a' === 'b' || 'c'

如果你運行它,你會看到它返回'c'。 您的回調中也會發生同樣的情況。 您必須將您的退貨聲明更改為此才能正常工作:

return e === 'a' || e === 'b'

一切似乎都是正確的。 問題在於您比較字符串的方式

你應該比較那些像e === "a" || e === "b" e === "a" || e === "b"

和工作代碼

const str = "asdfcvb";
const result = str.split("").every((e) => {
    return (e === "a" || e === "b")});
console.log(result);

解釋:

return e==='a'||'b'

對第一個項目"a"運行測試將返回 true,因為現在e在這里是"a" ,等於"a"

現在如果它到達第二個項目,它是"s"並且顯然不等於"a"所以return e==='a'||'b'變成return false||'b'現在當你評估這個時返回值將是"b"

並將"b"作為條件類似於true因為它不是undefined的或null

這可以測試如下

if("b") return true; // returns true

因此它為每個項目返回true ,從而最終返回true

您正在使用|| 操作員在您的情況下不正確。 這是一個常見的錯字。 您應該在||之后使用相同的等於短語 . 例如,您的代碼將是這樣的:

 const str = 'asdfcvb'; const result = str.split('').every((e) => { return e === 'a' || e === 'b'; }); console.log(result);

暫無
暫無

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

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