我正在搞乱一些简单的练习,发现了一些我觉得很奇怪的东西。我写了一个非常简单的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>
对我说“如果userName
等于Alice
,则为真,如果不是,如果userName
等于Bob
则为真。如果不是,则{ {1}}事实并非如此。我所进入的一切都是真实的,没有任何东西传递为虚假。任何人都可以对此有所了解吗?
顺便说一下,我仔细阅读MDN上的文档,找出这些逻辑运算符中的逻辑。我想通过我读到的,我的代码应该可以工作。
答案 0 :(得分:5)
这是因为您没有针对'Bob'
检查任何内容。
变化:
if(userName === 'Alice' || 'Bob')
要:
if(userName === 'Alice' || userName === 'Bob')
您当前代码始终返回true的原因是因为字符串(除非为空)为truthy。 'Bob'
评估为true
,因此您的if
语句完全是在说:如果用户名等于Alice,或者如果这是真的,那么...... 。 if ('Bob')
永远都是真的。