Javascript 如何创建一个函数来接受一个参数并在调用时增加它?
我已经创建了一个函数,它接受一个变量作为它的参数来递增,而接受其他变量来显示它 但是,它仅将传递的参数增加1Javascript 如何创建一个函数来接受一个参数并在调用时增加它?,javascript,function,Javascript,Function,我已经创建了一个函数,它接受一个变量作为它的参数来递增,而接受其他变量来显示它 但是,它仅将传递的参数增加1 var p1_score = 0; function updateScores(playerDisplay, scoreFor){ if (!gameOver) { scoreFor++; playerDisplay.textContent = scoreFor; }if (scoreFor === winningScore){
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,缺少返回语句。现在可以了!