【问题标题】:Beginner Question - Prompts , variables and scopes初学者问题 - 提示、变量和范围
【发布时间】:2021-01-28 23:14:33
【问题描述】:

我正在尝试创建一个全局范围的变量,它存储一个提示值(玩家的名字),但只有在我单击“开始”按钮时才会触发。(这就是为什么没有在函数 Start 之外声明该变量的原因)

我怎样才能让这个变量值(玩家的名字)可以被其他函数访问,但只在我点击开始按钮时才调用提示?

 Game.start.onclick = function Start(){  
  let namePlayer1 = prompt("Hello Player 1 ! What is your name?");
  let namePlayer2 = prompt("Hello Player 2 ! What is your name?"); 

 return alert(namePlayer1 + "- You have the symbol 'X'.\n"+ namePlayer2 +
      "- You have the symbol 'O'.\nClick on the button Change Turn to start!")
 }

【问题讨论】:

  • 您在函数内声明了这些变量,因此它们的作用域在此函数内。如果您希望它们可以在外部访问,则在外部声明它们(并在函数内部更改它们的值,这仍然很好)。
  • 是的,我知道。但是如果我在外面声明它们,在我点击开始按钮之前会调用提示!
  • 你想在你的全局范围内声明变量,但不给它们赋值,就像let namePlayer1; 然后简单地删除你函数中的 let 关键字,你就应该准备好了!跨度>
  • 在你的第一行 javascript 代码中只写 var namePlayer1 ="", namePlayer2 ="" 并删除 start.onlick 函数中的 let partonly
  • 是的,我知道你在说什么@ArthurBoucher。其实我想通过一个函数来改变全局变量谢谢

标签: javascript function scope prompt


【解决方案1】:

在 cmets 中提到的 @Jeremy 和 @Arthur 可能看起来像这样。您应该只将变量声明移到外部,而不是使用 prompt 函数调用进行整个初始化。

let namePlayer1;
let namePlayer2;

Game.start.onclick = function Start() {
    namePlayer1 = prompt("Hello Player 1 ! What is your name?");
    namePlayer2 = prompt("Hello Player 2 ! What is your name?");

    return alert(
      namePlayer1 +
        "- You have the symbol 'X'.\n" +
        namePlayer2 +
        "- You have the symbol 'O'.\nClick on the button Change Turn to start!"
    );
};

【讨论】:

  • 是的,就是这样。
  • 谢谢!!我设法做到了!我在函数中使用了“let”关键字,这阻止了我将全局变量更改为提示中返回的名称。
猜你喜欢
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 2017-08-10
  • 1970-01-01
  • 2012-01-02
  • 2017-07-18
相关资源
最近更新 更多