[英]if/else statements only logs if, not else
我的編碼作業遇到了一個問題。 這里是:
我的嘗試
let x=11;
let y=4;
let i=x%y;
if (i) {
console.log("Marco!")
}
else {
console.log("Polo")
}
當我需要它來記錄馬球時,這會記錄 Marco。 因此,當我繼續嘗試解決這個問題時,我想看看專家會如何做。
如果要檢查數字是偶數還是奇數,請使用模運算符 ( %
),它返回一個數除以另一個數的余數。 你應該扭轉你的邏輯:
let x = 11; let y = 4; let i = x % y; if (i % 2) { console.log("Polo!"); } else { console.log("Marco!"); } console.log(i); //So you can see if the above works or not
這是它的工作原理:
let i = x % y;
它的作用是將x
除以y
(將11
除以4
),並去除余數 - 在這種情況下,余數將為3
,因此i = 3
。
現在,棘手的問題來了。 如果你想知道一個數字是否為偶數,你可以使用% 2
,這就是我們在if
語句中所做的。 如果數字是偶數,它將返回0
因為除以 2 沒有余數。 這很棘手,但我會盡我所能向你展示:
如果我們有6
(我們知道它是偶數),並且我們通過將它除以2
測試它是否是偶數,它應該返回0
因為沒有余數:
console.log(6 % 2);
這就是我們在第一個片段中的邏輯的工作方式,只是它使用布爾真值和假值。 假值是:
false
0
''
""
``
null
undefined
NaN
因此,如果i
是偶數,則取模將返回0
,這意味着第一個if
語句將不會運行,因為i % 2
將返回0
其計算結果為false
,因此代碼將運行console.log("Marco!")
如果i
是偶數,但是console.log("Polo!")
如果i
是奇數。
進一步閱讀:
如果你想“運行一個循環”......你需要運行一個循環! :)
for (var i = 0; i < 10; i++) {
// do things!
}
這些循環既丑陋又可怕!
但是 - 它實際上只是一些指令的開始{
和結束}
。
然后還有其他一些事情。
for( some setup
, a condition
, what to do after each loop
)
i
但這只是一個約定 - 它用於“迭代器”或“索引”或其他任何東西。它可以是任何你想要的。設置也可以更復雜i
東西小於10,就再次運行循環i
加一所以 - 循環應該只運行它里面的任何代碼...... 10? 次? 還是11?
for (var counter = 0; counter < 10; counter++) {
console.log('curerntly...', counter);
}
現在……里面有什么?
這就是%
位的用武之地。這是典型的“嘶嘶聲”類型的測試。
for (var i = 0; i < 10; i++) {
var message = 'Marco';
var isOdd = (i % 2) != 0; // if it can't be evenly divided by 2...
if (isOdd) {
message = 'Polo';
}
console.log(message);
}
https://jsfiddle.net/sheriffderek/dtkj0aby/
你也可以用很多不同的方式來寫它。
for (var i = 0; i < 10; i++) {
console.log( (i % 2) != 0 ? "Marco" : "Polo" );
}
但這太丑了! (是的,你甚至可以讓它更短......)
所以,堅持幫助你和你的團隊閱讀它的東西,而不是試圖變得太瘋狂和不可讀!!! 代碼對人類和計算機一樣多。 這是我們的共同語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.