JavaScript:if语句正在改变随机生成器的结果?

时间:2013-03-10 18:17:54

标签: javascript if-statement random

基本上我正在创建一个类似于二十一点程序的程序,其中两张牌是根据随机数发生器发出的,同一张牌可能同时发出两次(即两张女王出现在一次)我想创建一个计数器,说明事件发生了多少次,但是当我实现一个if语句时,它会影响结果,这样两张卡总是完全一样...有人可以告诉我我是什么在这做错了?代码如下:

function dealHand() {
var randomCardOne = Math.floor ((Math.random() *13) +2);
var randomCardTwo = Math.floor ((Math.random() *13) +2);
    if (randomCardOne = randomCardTwo) {identicalCards()};
} 

var identicalPairs = 0;
function identicalCards(){
    document.getElementById("identical").value=++identicalPairs;
}

2 个答案:

答案 0 :(得分:2)

您正在将一张卡的值分配给另一张

if (randomCardOne = randomCardTwo) {identicalCards()};

应该是

if (randomCardOne == randomCardTwo) {identicalCards()};

在第一种情况下,您只是在评估randomCardTwo的值后,评估randomCardOne是否为“truthy”。

考虑您是否希望使用===代替==,因为

2 == '2' // yields true

2 === '2' // yields false

在这种情况下,这不是一个问题,但它可能在其他情况下,所以很高兴意识到这一点。我试着坚持使用===,因为它更严格。

答案 1 :(得分:1)

你正在使用=,这是JavaScript中的赋值运算符。你应该使用==

e.g。

if (randomCardOne == randomCardTwo) {identicalCards()};