通过参数更新数字变量的函数无法正确更新数字变量

Function updating a number var through a parameter doesn't correctly update number var

本文关键字:数字 更新 变量 函数 参数      更新时间:2023-09-26

所以我有一段这样的代码

var number = 0;
function addnumber(numbertype){
	numbertype = numbertype +50;
}
function numberupdate() {
	document.getElementById('adiv').innerHTML = number;
}

在某个地方,我打电话

onClick="addnumber(number);"

现在,如果我通过警报检查数字的值,它会正确显示。但是这个数字只达到 50 一次,而且我点击的次数越多也不会爬升,即使在 addnumber() 函数中调用的警报会正确计算数字,但在该函数之外检查时它不会更新数字的值。

确定我错过了一些简单的东西。

在你的addnumber函数中,你传入的变量增加了50,而不是(我假设)数字。

您可以将其更改为:

function addnumber(){
    number += 50;
}

您对数字和数字类型变量感到困惑。

var number = 0;
function addnumber(numbertype){
    number = number + numbertype +50;
}
function numberupdate() {
    document.getElementById('adiv').innerHTML = number;
}

javascript 函数的参数要么在原语的情况下按值传递,要么在对象的情况下"按引用"传递。您的变量"数字"是一个基元。在这种情况下,由基元值创建副本,并作为参数传递。因此,Addnumber 将 50 添加到数字的副本中,而不是添加到数字本身。当您想以这种方式更改变量的值时,请使用一个对象,然后它将按您最初预期的方式工作:

var number={value:0};
function addnumber(numbertype){
	numbertype.value = numbertype.value +50;
}