[英]Can't wrap my head around the behavior of this logical operator
我在搞一些簡單的練習,發現我認為有些奇怪的事情。 我寫了一個非常簡單的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
,則為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.