Javascript Can';I don’我不知道这个逻辑运算符的行为

Javascript Can';I don’我不知道这个逻辑运算符的行为,javascript,Javascript,我在做一些简单的练习,发现一些我认为很奇怪的东西。我编写了一个非常简单的HTML表单,当用户输入他们的名字时,如果是Bob或Alice,他们会很高兴。如果是另一个名字,它会说我不认识你。所以,我的想法是使用逻辑运算符来比较输入的用户名。这是我的密码: <h1>This is the practice space</h1> <div id="output"> <label>what is your name?</labe

我在做一些简单的练习,发现一些我认为很奇怪的东西。我编写了一个非常简单的HTML表单,当用户输入他们的名字时,如果是
Bob
Alice
,他们会很高兴。如果是另一个名字,它会说
我不认识你。
所以,我的想法是使用逻辑运算符来比较输入的用户名。这是我的密码:

<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>
这是练习空间
你叫什么名字?
发过去!
函数getName(){
var userName=document.getElementById('name')。值;
如果(用户名=='Alice'| |'Bob'){
document.getElementById('output-name')。innerHTML='Hello'+userName+'!很高兴见到您!';
}否则{
document.getElementById('output-name')。innerHTML='我不认识你';
}
}
对我来说,这表示“如果
用户名
等于
爱丽丝
,那么是真的,如果
用户名
等于
鲍勃
那么是真的。如果不是,那么
我不认识你。
事实并非如此。我输入的所有内容都作为真传递,没有任何内容作为假传递。有人能理解这一点吗


顺便说一句,我仔细阅读了上的文档,特别是为了找出这些逻辑运算符中的逻辑。我认为通过阅读,我的代码应该可以工作。

这是因为您没有针对
'Bob'
检查任何内容

更改:

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


当前代码始终返回true的原因是字符串除非为空,否则为。
'Bob'
的计算结果为
true
,因此
if
语句的字面意思是:如果用户名等于Alice,或者这是true,那么….
if('Bob'))
将始终为真。

因为任何字符串都不是假的,所以你的条件总是通过的。但这是有效的:
如果(用户名=='Alice'| |用户名=='Bob'){…}
knowUsers.indexOf(用户名)!=-1也可以派上用场。+1解释得很好,当你的答案出现时,我已经给出了一半:(@James Donnelly哇!这很有道理。谢谢你的解释。
if(userName === 'Alice' || userName === 'Bob')