簡體   English   中英

無法理解這個邏輯運算符的行為

[英]Can't wrap my head around the behavior of this logical operator

我在搞一些簡單的練習,發現我認為有些奇怪的事情。 我寫了一個非常簡單的HTML表單,當用戶輸入他們的名字時,如果它是BobAlice話,它們會很不錯。 如果這是另一個名字,它會說I don't know you. 因此,我的想法是使用邏輯運算符比較輸入的用戶名。 這是我的代碼:

<h1>This is the practice space</h1>
    <div id="output">
        <label>what is your name?</label>
        <input id="name" type="text">
        <button type="button" onclick="getName()">Send it through!</button>
        <span id="output-name"></span>
    </div>

    <script>
        function getName(){

            var userName = document.getElementById('name').value;

            if(userName === 'Alice' || 'Bob'){
                document.getElementById('output-name').innerHTML = 'Hello ' + userName + '! Glad to have you!';
            } else {
                document.getElementById('output-name').innerHTML = 'I don\'t know you.';
            }
        }
    </script>

對我來說,這是“如果userName等於Alice ,則為true,否則為true,如果userName等於Bob ,則為true。否則, I don't know you.情況並非如此。我輸入的所有內容都以正確,沒有任何事物能像錯誤一樣傳遞。任何人都可以理解嗎?

順便說一句,我通讀了有關MDN的文檔,專門研究了這些邏輯運算符中的邏輯。 我以為我讀到的代碼應該可以工作。

那是因為您沒有對'Bob'檢查。

更改:

if(userName === 'Alice' || 'Bob')

至:

if(userName === 'Alice' || userName === 'Bob')

當前代碼始終返回true的原因是因為字符串(除非為空)是true 'Bob'計算結果為true ,因此您的if語句從字面上說: 如果用戶名等於Alice,或者如果它為true,則...。 if ('Bob')始終為true。

暫無
暫無

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

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