警报消息错误。

4

我目前对JavaScript还不太熟悉,在学校里正在学习!我正在做一个游戏编程作业,但是警报框一直弹出错误信息。每次警报都会弹出“你找到了一张匹配的牌!”,但实际上这并不应该发生。我已经尝试了一个小时来解决这个问题。谢谢

var cards = ["queen", "king", "queen", "king"];

var cardsInPlay = [];

var cardOne = cards[0];

cardsInPlay.push(cardOne);

console.log("User flipped " + cardOne);

var cardTwo = cards[1];

cardsInPlay.push(cardTwo);

console.log("User flipped " + cardTwo);

if (cardsInPlay.length === 2){
    cardsInPlay[0] === cardsInPlay[1];
    alert("You found a match!");
} else {
        alert("Sorry, try again");
    }

1
假设您修复了语法,那么cardsInPlay [0]怎么可能等于cardsInPlay [1]? - frenchie
@frenchie 这可能是编程示例中的一个中间步骤。 - Brad
@frenchie 我认为这个目的只是为了得到一条消息,在预备课程中,我们还没有完成使它成为一个可工作游戏的步骤,但是你可以通过更改数组变量 var cardOne = cards[3]; 来使它更容易。 - T. Evans
2个回答

2

您有一个简单的语法错误。

if (cardsInPlay.length === 2){
  cardsInPlay[0] === cardsInPlay[1];

把你的第二个条件语句放在括号{里面,会导致它失效。请尝试以下方法:

if (cardsInPly.length === 2 && cardsInPlay[0] === cardsInPlay[1]) {

条件语句始终位于括号 () 内。如果在外面,它将不起作用。

cardsInPlay[0]cardsInPlay[1] 不相等时,输入 cardsInPlay[0] === cardsInPlay[1]; 等效于输入 false;。它在技术上是有效的,但没有任何作用。


哇,我完全忽略了那个。谢谢你的帮助! - T. Evans
值得一提的是,现在它永远不会匹配。 - baao
1
if 语句中写入 cardsInPlay[0] === cardsInPlay[1]; 不会出现 语法错误 - Tân
1
@TânNguyễn 没有编译器语法错误,但是 if 语句的语法错误是有的。很明显代码的意图是什么,只是使用了不正确的语法。这就是为什么我包含了额外的解释。 - Brad
@Brad,我现在正在使用Sublime Text,但是它没有集成开发环境(IDE),有没有适用于它的插件或扩展呢?谢谢。 - T. Evans
显示剩余4条评论

0

我认为你的条件应该像下面这样:

if (cardsInPlay.length === 2 && cardsInPlay[0] === cardsInPlay[1]) {
  alert("You found a match!");
}

哇,我完全忽略了那个。谢谢你的帮助! - T. Evans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接