Javascript Can';I don’我不知道这个逻辑运算符的行为
我在做一些简单的练习,发现一些我认为很奇怪的东西。我编写了一个非常简单的HTML表单,当用户输入他们的名字时,如果是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
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')