Javascript 为什么此代码显示“quot;纸张;?

Javascript 为什么此代码显示“quot;纸张;?,javascript,jquery,frontend,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

我正在尝试这个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);
var userChoice=prompt(“您选择石头、布还是剪刀”);
var=0.35;
console.log(计算机选择);

如果(0你不能写出这样的表达式

if(0 < computerChoice < 0.33)
if(0
在Javascript中。必须将其拆分为两个表达式:

if(0 < computerChoice && computerChoice < 0.33)
if(0
您需要将小于、大于检查分为两部分

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

if(computerChoice>0&&computerChoice这是错误的语法。
a
不是有效的JavaScript。必须在块中创建两个条件

if ( 0 < computerChoice < 0.33)
if(0
应该是

if (computerChoice > 0 && computerChoice < 0.33)
if(computerChoice>0&&computerChoice<0.33)
查看这个片段

var cpuChoice=document.getElementById(“cpu选择”);
var userChoice=prompt(“您选择石头、布还是剪刀”);
var=0.35;
//console.log(计算机选择);
if(computerChoice>0&&computerChoice<0.33){
computerChoice=“rock”;
}
否则如果(computerChoice>0.34&&computerChoice<0.66){
computerChoice=“剪刀”;
}
否则{
computerChoice=“纸张”;
}
cpuChoice.innerHTML=计算机选择;

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

我的猜测是0<计算机选择为真,如果大于.33,将被转换为1,对于第二个if.34<计算机选择为真,将被转换为1,如果大于.66,那么这是错误的,所以else语句被计算

尝试类似于
0
等的方法

编辑:我回到一台电脑,能够测试这个,我在谷歌浏览器上体验了这些结果

true < 1 // false
true > 1 // false
true == 1 // true
true<1//false
true>1//false
true==1//true
(注意:体验可能会有所不同,我不会称这种行为为来自典型强类型语言的定义良好的行为,但它可能在JavaScript中被定义为这种行为)

x < y < z 
x
被评估为

(x < y) < z
(x
对你来说

0 < computerChoice < 0.33
>> (0 < computerChoice) < 0.33
>> true < 0.33
>> false //always
0>(0>真值<0.33
>>错//总是

*旁注:等式运算符也是如此。
x==y==z

这对您不起作用的原因是,TRUE不小于0.66。表达式的计算方式如下
(0.36如果为真(computerChoice=0.35)
现在,下一部分是(true<0.66),它是false。所以表达式的计算结果是false。
方法:0.34,因为您使用了:

if(computerChoice < 0.33){ ... }

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

0
0
false
,下一次也是如此,因此
是“论文”
是结果。是的。epascarello就在这里。比较运算符正是为了这个目的而做的。谢谢。这解决了我的问题。请注意,所有运算符都是二进制运算符,这意味着它们只接受两个操作数,然后根据
if(computerChoice < 0.33){
    computerChoice = "rock";
}else if(computerChoice < 0.66){
    computerChoice = "scissors";
}else{
    computerChoice = "paper";
}