簡體   English   中英

if/else 語句只記錄 if,不記錄 else

[英]if/else statements only logs if, not else

我的編碼作業遇到了一個問題。 這里是:

  • 編寫一個循環記錄“ Marco !” 當我是偶數時
  • 波羅!” 當我是奇怪的。
  • 不要編輯現有代碼。
  • 提示 1:使用 if/else 語句
  • 提示 2:谷歌 mod 運算符 (%)

我的嘗試

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 setupa conditionwhat to do after each loop

  1. 設置:創建一個變量來跟蹤每次運行時的方向(這通常寫成i但這只是一個約定 - 它用於“迭代器”或“索引”或其他任何東西。它可以是任何你想要的。設置也可以更復雜
  2. 條件:只要這個i東西小於10,就再次運行循環
  3. 每次循環后: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM