为什么这段代码会显示" paper"?

时间:2016-06-20 16:50:19

标签: javascript jquery frontend

我正在尝试此JavaScript代码,这是 Codeacademy 网站中的练习。 但问题在于它显示了" 论文"在控制台。它应该显示" 剪刀"? 问题是什么?我做错了吗?

以下是JavaScript:

var userChoice= prompt("Do you choose rock, paper or scissors");
var computerChoice=0.35;
console.log(computerChoice);
if(0<computerChoice<0.33){
    computerChoice="rock";
}
else if(0.34<computerChoice<0.66){
    computerChoice="scissors";
}
else{
    computerChoice="paper";
}
console.log(computerChoice);

7 个答案:

答案 0 :(得分:3)

你需要分解小于,而不是分成两部分。

if(computerChoice>0 && computerChoice<0.33){

同样的事情需要对另一方做。

答案 1 :(得分:2)

你不能写像

这样的表达式
if(0 < computerChoice < 0.33)

在Javascript中。你必须将它分成两个表达式:

if(0 < computerChoice && computerChoice < 0.33)

答案 2 :(得分:2)

x < y < z 

评估为

(x < y) < z

在你的情况下,

0 < computerChoice < 0.33
>> (0 < computerChoice) < 0.33
>> true < 0.33
>> false //always

* Side-Note:同样适用于相等运算符。 x == y == z

答案 3 :(得分:2)

之所以这不适合你,是因为TRUE不小于0.66。表达式将像这样计算 (0.36 < computerChoice ) => true if (computerchoice = 0.35 ) 现在下一部分是(真&lt; 0.66),这是假的。因此表达式评估为假。 Approach: 0.34<computerChoice==computerChoice<0.66 快乐编码:)

答案 4 :(得分:0)

这是错误的语法。 a < b < c不是有效的JavaScript。你必须在块中创建两个条件。

if ( 0 < computerChoice < 0.33)

应该是

if (computerChoice > 0 && computerChoice < 0.33)

查看此代码段。

var cpuChoice = document.getElementById("cpu-selection");

var userChoice = prompt("Do you choose rock, paper or scissors");
var computerChoice = 0.35;
//console.log(computerChoice);
if (computerChoice > 0 && computerChoice < 0.33) {
    computerChoice = "rock";
}
else if (computerChoice > 0.34 && computerChoice < 0.66) {
    computerChoice = "scissors";
}
else {
    computerChoice = "paper";
}

cpuChoice.innerHTML = computerChoice;
<p id="cpu-selection"></p>

答案 5 :(得分:0)

我认为基于范围的不等式在JavaScript中是非法的,左右不等。因为JavaScript是弱类型的,我的猜测是它会评估一个不等式并得到一个真值或假值,然后将其转换为数字。

我的猜测是0&lt;计算机选择是真的,如果大于,则将其转换为1。 33,对于第二个如果.34&lt;计算机选择是真实的并且转换为1> .66所以这是假的,所以评估了else语句

尝试0 < computerChoice&& computerChoice < .33等等。

编辑:我回到了计算机并且能够测试这个,我在谷歌浏览器中体验了这些结果

true < 1 // false
true > 1 // false
true == 1 // true

(注意:经验可能有所不同,我不会将此行为称为来自通常更强类型的语言,但它可能在JavaScript中被定义为此行为)

答案 6 :(得分:0)

因为您使用了这个:

if(computerChoice < 0.33){ ... }

您的下一个陈述是else if,您实际上可以从第二个0.34<中移除if,因为它已经超过了0.34,因为之前的if是假的。

if(computerChoice < 0.33){
    computerChoice = "rock";
}else if(computerChoice < 0.66){
    computerChoice = "scissors";
}else{
    computerChoice = "paper";
}

您也不需要检查computerChoice是否小于0,因为Math.random总是返回0到1之间的值。