无法绕过这个逻辑运算符的行为

der*_*ain 2 javascript

我正在搞乱一些简单的练习,发现了一些我觉得很奇怪的东西.我写了一个非常简单的HTML表单,当用户输入他们的名字时,如果是,Bob或者Alice它们会很棒.如果它是另一个名字,它会说,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>
Run Code Online (Sandbox Code Playgroud)

对我来说这说"如果userName等于Alice,那么就是真的,如果没有,如果userName等于Bob那么真的.如​​果没有,那就I don't know you.不是这样了.我所进入的一切都是真实的,没有任何东西传递为虚假.任何人都可以做任何这种感觉?

顺便说一下,我仔细阅读了MDN上的文档,以找出这些逻辑运算符中的逻辑.我想通过我读到的,我的代码应该工作.

Jam*_*lly 5

那是因为你没有检查任何东西'Bob'.

更改:

if(userName === 'Alice' || 'Bob')
Run Code Online (Sandbox Code Playgroud)

至:

if(userName === 'Alice' || userName === 'Bob')
Run Code Online (Sandbox Code Playgroud)

你当前代码一直返回true的原因是因为字符串(除非为空)是真实的.'Bob'计算结果为true,所以你的if语句是毫不夸张地说:如果用户名是等于翘,或者如果这是真的,那么.......if ('Bob')永远都是真的.