Javascript函数更改全局变量(数组)

Javascript函数更改全局变量(数组),javascript,arrays,function,Javascript,Arrays,Function,我想做一个Yahtzee游戏。我有一个功能来检查掷骰子是否是一个小直 var sortedDice = rollDice().sort(); // rollDice() generates an array with 5 random numbers 我的功能是确定是否存在小直线: function isSmStraight(checkSmStraight){ var smStraight = false; var i = 1; var j = 0; //w

我想做一个Yahtzee游戏。我有一个功能来检查掷骰子是否是一个小直

var sortedDice = rollDice().sort(); // rollDice() generates an array with 5 random numbers
我的功能是确定是否存在小直线:

function isSmStraight(checkSmStraight){
    var smStraight = false;

    var i = 1;
    var j = 0;

    //will remove a die if there are duplicates
    while(i < checkSmStraight.length){
        if (checkSmStraight[i] == checkSmStraight[j]){
            i++;
        } else {
            j++;
            checkSmStraight[j] = checkSmStraight[i];
            i++;
        }//end if else
    }//end while loop that moves duplicates to last index of array
    checkSmStraight.pop();//removes last index of array

    if (isLgStraight(checkSmStraight) == true){
        smStraight = true;
    } else if (checkSmStraight.length == 4 && checkSmStraight[checkSmStraight.length-1] - checkSmStraight[0] == 3){
        smStraight = true;
    }//end if else if
    return smStraight;
}//end function isSmStraight()
函数isSmStraight(检查SMSTRAIGHT){
var-smstright=false;
var i=1;
var j=0;
//如果存在重复项,将移除模具
而(i

我已将sortedDice复制到另一个数组fourDice,我可以使用它调用isSmStraight()。我只想让这个函数使用四个索引数组,但它总是会弄乱sortedDice,所以程序的其余部分使用四个骰子数组。(这不是整个程序,只是我认为相关的部分。此外,程序已经完成,我只是尝试首先正确使用评分函数)。

默认情况下,数组在JavaScript中作为引用传递。所以如果你只是在做这样的事情
var fourDice=sortedDice
然后编辑fourDice,sortedDice也会被编辑
还请在问题中输入将sortedDice复制到fourDice的代码。

如果您的函数为,则必须在外部定义全局变量,如
var newvar=“”;函数test(){newvar=“newtext”;}
您可能传递的是引用,而不是新数组,请使用
.slice()
创建副本。是的,全局变量是在函数外部定义的。使用.slice()非常有效。谢谢你们两位的快速回复,这正是我所做的。使用.slice()非常有效。现在我只需要弄清楚如何将其标记为已解决(该站点的新内容)。