MJ *_*ner 5 javascript conditional if-statement
我的问题是:我是JavaScript的新手,我试图了解“ if {”和“ else if {”语句之间的区别。到目前为止,我发现的唯一答案与后来继承我的代码的人有关,显然没有人会继承我的类项目!我的问题是这样的:
我正在codecademy上做剪刀石头布游戏项目。我的Math.random()方法产生一个随机数。我首先实现了我的代码if(computerChoice <= 0.33){
及其替代方案为:
if (computerChoice > 0.67){......    Which checked out and produced a viable answer. 
Run Code Online (Sandbox Code Playgroud)
但是在其建议中,它使用else if语句。我的具体问题是,无论哪种情况,我基本上都设置了一个低范围和一个高范围,剩下的则代表中间位置。否则就不是先前的条件。但是,如果我的条件(如果已经在逻辑上排除了先前的答案)(无论如何必须在逻辑上将其排除在其他情况下),究竟有什么区别?为什么在必要时使用else if / when else?
我的代码如下:
选项一(否则):
var userChoice = prompt("do you want rock paper or scissors?");
var computerChoice = Math.random();
if (computerChoice <= 0.33){
  computerChoice = "rock";
}
else if (computerChoice >= 0.67){
 computerChoice = "scissors";
}
else {
 computerChoice = "paper";
}
console.log(computerChoice);
Run Code Online (Sandbox Code Playgroud)
选项二(如果为2,则为:)
var userChoice = prompt("do you want rock paper or scissors?");
var computerChoice = Math.random();
if (computerChoice <= 0.33){
 computerChoice = "rock";
}
if (computerChoice >= 0.67){
 computerChoice = "scissors";
}
else {
 computerChoice = "paper";
}
console.log(computerChoice);
Run Code Online (Sandbox Code Playgroud)
    if-else if-else 逻辑比第二个示例更优雅,因为它会在正确分配后停止评估条件。
考虑如果computerChoice 是0.25,你的第二种情况(没有else if)将如何工作。第一个 if 条件将评估为 true,并且computerChoice 将被重新分配为“rock”。然而,逻辑不会认为自己已经完成,而是继续进行,并检查 computerChoice 是否 >= 0.67。由于 ComputerChoice 现在已经“稳定”,解释器将尝试将其转换为数值。由于摇滚不会转换,我猜你的逻辑目前将按预期工作。
但是,请考虑这样一种情况:您决定将实体(石头、布和剪刀)定义为对象,并使用该对象的索引作为处理的输出。例如:
var myentities = 
{
    1: { name: "rock", image_url: "..." },
    2: { name: "paper", image_url: "..." },
    3: { name: "scissors", image_url: "..." }
};
Run Code Online (Sandbox Code Playgroud)
假设您还决定停止使用对象的名称,而是使用其 ID。在这种情况下,第一个 if 会将 1 的值分配给 computerChoice,然后第二个 if 将检查 1 是否 >= 0.67。结果,你的代码会(相当无辜地)100% 地选择纸张,让你在短时间内感到非常困惑。
这个故事的寓意是:不必要的评价永远不会帮助你,甚至可能会伤害你。