2013-03-10 68 views
0

基本上我創建了一個類似於二十一點程序的程序,其中兩張牌根據隨機數發生器處理,同一張牌同時處理兩次的可能性(即兩個女王的心一次出現),我想創建一個計數器,發生這種事件的次數,但是當我執行if語句時,它會影響結果,這樣兩張卡片總是完全一樣......有人可以告訴我我在做什麼這裏錯了嗎?代碼如下:JavaScript: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

你是一個卡的值賦給另一個

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

應該

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

在你只是如果randomCardOne評價第一種情況下被asigned後「truthy」 randomCardTwo的值。

考慮,如果你可能想使用===而不是==因爲

2 == '2' // yields true 

2 === '2' // yields false 

這不是在這種情況下的問題,但它可能是在其他國家,因此是很好的意識到這一點。我試圖堅持===,因爲它更嚴格。

+0

+1推薦使用'==='。 – 2013-03-10 18:29:41

+0

謝謝!!!!!! – hayleyelisa 2013-03-10 18:30:30

1

您正在使用=,這是JavaScript中的賦值運算符。您應該使用==

例如

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

對,我甚至都沒有想過!非常感謝!! – hayleyelisa 2013-03-10 18:20:43

+0

正如在另一個答案中提到的那樣:'==='比'=='更好,因爲它會執行額外的類型檢查。在這種情況下類型很明顯,但儘管'==='速度稍快,但它最重要的是教會您一種乾淨的編碼風格。 – 2013-03-10 18:21:50