繁体   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