[英]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.