嵌套在If语句中的Javascript switch语句无法访问其他变量并返回Unidentified

埃菲·基兰

我像往常一样在做摇滚/纸/剪刀游戏。不知何故,我的ifswitch语句无法读取其他两个函数设置的值,当我console.log result返回时undefined

但是,当我手动设置usercomputer变量decideWinner功能按预期工作时。

我一直在修补它几个小时,如果能提供一些帮助,将不胜感激。谢谢。

let user
let computer
let result
//1
function userChoice() {
  let user = prompt(`rock, paper, scissors`)
}

//2
function computersTurn() {
  let randomNumber = Math.floor((Math.random() * 3) + 1);
  switch (randomNumber) {
    case 1:
      computer = `rock`;
      break;
    case 2:
      computer = `scissors`;
      break;
    case 3:
      computer = `paper`;
      break;
  }
}

//3
function decideWinner() {
  if (user == `rock`) {
    switch (computer) {
      case `rock`:
        result = `tie`
        break;
      case 'scissors':
        result = `player`
        break;
      case `paper`:
        result = `computer`
        break;
    }
  } else if (user == `paper`) {
    switch (computer) {
      case `rock`:
        result = `player`
        break;
      case 'scissors':
        result = `computer`
        break;
      case `paper`:
        result = `tie`
        break;
    }
  } else if (user == `scissors`) {
    switch (computer) {
      case `rock`:
        result = `computer`
        break;
      case 'scissors':
        result = `tie`
        break;
      case `paper`:
        result = `player`
        break;
    }
  }
}

userChoice();
computersTurn();
decideWinner();
console.log(result);

维斯卡迈勒

您不应重新创建该user变量。执行此操作时,user会在本地创建另一个变量,并将提示结果分配给该变量,从而保持全局user变量未定义。使用user = ...代替let user = ...

let user
let computer
let result
//1
function userChoice() {
  user = prompt(`rock, paper, scissors`)
}

//2
function computersTurn() {
  let randomNumber = Math.floor((Math.random() * 3) + 1);
  switch (randomNumber) {
    case 1:
      computer = `rock`;
      break;
    case 2:
      computer = `scissors`;
      break;
    case 3:
      computer = `paper`;
      break;
  }
}

//3
function decideWinner() {
  if (user == `rock`) {
    switch (computer) {
      case `rock`:
        result = `tie`
        break;
      case 'scissors':
        result = `player`
        break;
      case `paper`:
        result = `computer`
        break;
    }
  } else if (user == `paper`) {
    switch (computer) {
      case `rock`:
        result = `player`
        break;
      case 'scissors':
        result = `computer`
        break;
      case `paper`:
        result = `tie`
        break;
    }
  } else if (user == `scissors`) {
    switch (computer) {
      case `rock`:
        result = `computer`
        break;
      case 'scissors':
        result = `tie`
        break;
      case `paper`:
        result = `player`
        break;
    }
  }
}

userChoice();
computersTurn();
decideWinner();
console.log(result);

注意:您可以computersTurn用更简单的方式重写您的函数:

function computersTurn() {
  let choices = ["rock", "scissors", "paper"];
  let randomNumber = Math.floor((Math.random() * 3));
  computer = choices[randomNumber];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果嵌套在 if 语句中 - Javascript

SELECT嵌套在WITH语句中

嵌套在if语句中的MySQL查询-PHP

JavaScript 无法访问多值返回语句中的变量

嵌套在WITH语句中的Case语句未选择案例

嵌套在循环中的 if 语句中的 OCaml 返回值

嵌套在另一个嵌套的if语句中的if语句

当嵌套在此if语句中时,为什么requestAnimationFrame()无法工作?

如果嵌套在if语句中,则无法使用剃刀代码在视图中呈现String.Format

当嵌套在 if 语句中时,启动 cmd 无法在 Windows 批处理文件中正确执行

无法访问在 Switch 语句之外声明的变量

MySQL是否可以将SELECT LEFT嵌套在SELECT语句中?

在Python中:如何在嵌套在for循环中的if语句中使用索引号?

从外部访问在 JavaScript switch 语句中声明的变量

嵌套在另一个IF语句中的vb.net IF语句始终将返回true,并且即使条件指向false,也永远不会运行“ false”代码

如果语句嵌套在for循环中

嵌套在Python中的if else语句

FAB变量-无法访问的语句

嵌套if语句中的调用中断

在 ansible 的 if 语句中嵌套 for 循环

WHERE 语句中的嵌套 CASE

嵌套 If 语句中的重复逻辑

嵌套在 for 循环中的 if 语句:在 if 语句中达到条件检查时,在第二次迭代中从循环中中断

需要在 if 语句中嵌套 if 语句的指导

返回语句似乎在 javascript switch 语句中不起作用

无法访问的代码-在switch语句返回后放置一个中断

else语句,如果在if语句中无法访问

JavaScript语句中的冒号

返回语句中的JavaScript分配