Javascript 初学者问题-提示、变量和范围

Javascript 初学者问题-提示、变量和范围,javascript,function,scope,prompt,Javascript,Function,Scope,Prompt,我试图创建一个全局范围的变量,该变量存储一个提示值(玩家的名字),但只有当我点击开始按钮时才会触发。(这就是为什么变量没有在函数Start之外声明的原因) 如何使这个变量值(播放器的名称)可供其他函数访问,但仅在单击开始按钮时调用提示 Game.start.onclick = function Start(){ let namePlayer1 = prompt("Hello Player 1 ! What is your name?"); let namePla

我试图创建一个全局范围的变量,该变量存储一个提示值(玩家的名字),但只有当我点击开始按钮时才会触发。(这就是为什么变量没有在函数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!")
 }

评论中提到的@Jeremy和@Arthur可能是这样的。您应该只将变量声明移到外部,而不是使用
提示符
函数调用进行整个初始化

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!"
    );
};

评论中提到的@Jeremy和@Arthur可能是这样的。您应该只将变量声明移到外部,而不是使用
提示符
函数调用进行整个初始化

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 namePlayer1
然后只需删除函数中的let关键字,就可以全部设置好了!在您的第一行javascript代码中,只需编写var namePlayer1=“”,namePlayer2=“”,并在开始时删除let部分。单击函数是的,知道我理解您所说的@ArthurBoucher。事实上,我想通过一个函数来更改全局变量谢谢你在函数中声明了这些变量,所以它们的作用域在这个函数中。如果您想在外部访问它们,那么在外部声明它们(并在函数内部更改它们的值,这仍然很好)。但是如果我在外部声明它们,在单击开始按钮之前会调用提示!!您希望在全局范围内声明变量,但不给它们赋值,就像
let namePlayer1
然后只需删除函数中的let关键字,就可以全部设置好了!在您的第一行javascript代码中,只需编写var namePlayer1=“”,namePlayer2=“”,并在开始时删除let部分。单击函数是的,知道我理解您所说的@ArthurBoucher。事实上,我想通过一个函数来改变全局变量。谢谢。是的,就是这样。谢谢!!我设法做到了!!我在函数中使用了“let”关键字,它阻止我将全局变量更改为提示符中返回的名称。是的,就是这样。谢谢!!我设法做到了!!我在函数中使用了“let”关键字,这阻止我将全局变量更改为提示符中返回的名称。