Javascript 如何创建一个函数来接受一个参数并在调用时增加它?

Javascript 如何创建一个函数来接受一个参数并在调用时增加它?,javascript,function,Javascript,Function,我已经创建了一个函数,它接受一个变量作为它的参数来递增,而接受其他变量来显示它 但是,它仅将传递的参数增加1 var p1_score = 0; function updateScores(playerDisplay, scoreFor){ if (!gameOver) { scoreFor++; playerDisplay.textContent = scoreFor; }if (scoreFor === winningScore){

我已经创建了一个函数,它接受一个变量作为它的参数来递增,而接受其他变量来显示它

但是,它仅将传递的参数增加1

var p1_score = 0;

function updateScores(playerDisplay, scoreFor){
    if (!gameOver) {
        scoreFor++;
        playerDisplay.textContent = scoreFor;
    }if (scoreFor === winningScore){
        playerDisplay.classList.add("winner");
        gameOver = true;
    }
我这样称呼它:

p1_button.addEventListener("click", function(){
    updateScores(p1_display, p1_score);
});

因此,单击按钮时,p1_分数的增量不会超过1。

您应该会收到它。差不多

function updateScores(playerDisplay, scoreFor){
    if (!gameOver) {
        scoreFor++;
        playerDisplay.textContent = scoreFor;
    }if (scoreFor === winningScore){
        playerDisplay.classList.add("winner");
        gameOver = true;
    }
    return  scoreFor;
}
然后

p1_button.addEventListener("click", function(){
    p1_score = updateScores(p1_display, p1_score);
});
或者另一种解决方案是,只需将其声明为全局

   var scoreFor =0;
   function updateScores(playerDisplay, scoreFor){
        if (!gameOver) {
            scoreFor++;
            playerDisplay.textContent = scoreFor;
        }if (scoreFor === winningScore){
            playerDisplay.classList.add("winner");
            gameOver = true;
        }
    }

 p1_button.addEventListener("click", function(){
        updateScores(p1_display);
    });

您可以选择一个对象,因为对于该对象,您将移交对象引用而不是值,这不会更改外部变量

function updateScores(playerDisplay, scoreFor) {
    if (!gameOver) {
        scoreFor.value++;
        playerDisplay.textContent = scoreFor.value;
    } else if (scoreFor.value === winningScore) { // assuming an else if
        playerDisplay.classList.add("winner");
        gameOver = true;
    }
}

var p1_score = { value: 0 }; // object with value

p1_button.addEventListener("click", function(){
    updateScores(p1_display, p1_score);
});

p1_分数
scoreFor
是两个不同的变量。调用函数时,第一个函数将其值传递给函数中的值。由于该值是一个数字(它是一个基本值),因此该数字是复制的,而不是使用引用传递的。因此,为增加
score不会影响
p1\u分数

这可能是在一些其他语言中,例如C++,其中有指针和通过引用。 将函数更改为如下内容:

function updateScores(playerDisplay, scoreFor){
    // ...
    return scoreFor;    // return scoreFor after it's been altered
}
p1_score = updateScores(p1_display, p1_score);
然后使用如下函数:

function updateScores(playerDisplay, scoreFor){
    // ...
    return scoreFor;    // return scoreFor after it's been altered
}
p1_score = updateScores(p1_display, p1_score);

您必须在函数外部声明scoreFor,我的意思是像全局变量一样声明并替换为:
scoreFor++
使用此命令:
scoreFor=scoreFor+1

函数将增加它接收到的值的副本。感谢Suresh,缺少返回语句。现在可以了!