Javascript 全局变量不起作用

标签 javascript global-variables

我在 JavaScript 中遇到全局变量问题。我尝试做的是在函数外声明变量,然后在函数内更改它,然后调用另一个函数。从我读过的内容来看,这应该有效,但它只是给我未定义的。这是我正在制作的卡片绘图游戏的代码。

var randSuit;
function getRandCard() {
    var randNum;
    var randSuit;
    var randVal;
    randNum = Math.floor(Math.random()*13)+1;
    if (randNum == 1) {
        randVal = "2";
    } else if (randNum == 2) {
        randVal = "3";
    } else if (randNum == 3) {
        randVal = "4";
    } else if (randNum == 4) {
        randVal = "5";
    } else if (randNum == 5) {
        randVal = "6"; 
    } else if (randNum == 6) {
        randVal = "7";
    } else if (randNum == 7) {
        randVal = "8";
    } else if (randNum == 8) {
        randVal = "9"; 
    } else if (randNum == 9) {
        randVal = "10";
    } else if (randNum == 10) {
        randVal = "Jack";
    } else if (randNum == 11) {
        randVal = "Queen";
    } else if (randNum == 12) {
        randVal = "King";
    } else if (randNum == 13) {
        randVal = "Ace";
    }

    randNum = randNum = Math.floor(Math.random()*4)+1;

    if (randNum == 1) {
        randSuit = "Hearts";
    } else if (randNum == 2) {
        randSuit = "Clubs";
    } else if (randNum == 3) {
        randSuit = "Spades";
    } else if (randNum == 4) {
        randSuit = "Diamonds";
    }

    console.log(randSuit);
    var randCard = (randVal + " of " + randSuit);
    //Return the Value of the randomly chosen Card.
    return (randCard);
}

//This function calls the random card from the function above, then applies logic to see if it's the same, then outputs the result.
$(function() {
    $('#drawCard').click(function() {

        var e = document.getElementById("faceValue");
        var faceValue = e.options[e.selectedIndex].text;
        var e = document.getElementById("suit");
        var suit = e.options[e.selectedIndex].text;

        $('#oneCardContainer').slideDown('slow');
        var pickedCard = (faceValue + " of " + suit);

        var randCard = getRandCard();
        console.log (randSuit);

        if (pickedCard == randCard) {
            $("#oneCardResults").val("You Chose a " + pickedCard + " and got a " + randCard + ". \nYou Win!");
        } else if (pickedCard != randCard) {

            $("#oneCardResults").val("You Chose a " + pickedCard + " and got a " + randCard + ". \nYou Lose!");

        }
    });
});

那是我试过的代码,我试图传递的变量是 randSuit。我做错了什么?

最佳答案

您正在定义一个名为 randSuit 的全局变量,但还有一个同名的局部变量。当您执行 randSuit = randSuit; 时,实际上没有任何反应,因为左侧和右侧都引用局部变量。您需要以不同的方式命名它们。

关于Javascript 全局变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220678/

相关文章:

javascript - 使用 Javascript 创建输出时如何添加过渡和转换?

Javascript innerHTML 调用 onclick 函数

c++ - 在多个函数中使用相同的随机数生成器

javascript - 在 JavaScript 中初始化全局变量

PHP 模板

用于切换屏幕的 JavaScript 库

javascript - 创建 JSON - 部分循环,部分纯字符串

perl - 在 perl 中使运行时变量名称成为全局变量

c++ - 动态链接 DLL 需要与其调用者共享一个全局变量

javascript - 为 AJAX 调用准备 Vuex 存储数据的正确方法