js 函数参数 修改问题?在线等,高人指点啦

JavaScript025

js 函数参数 修改问题?在线等,高人指点啦,第1张

var

a=10

function

f1(a)

{

alert(a)

a

=

1//修改形参a

alert(1

===

a)

alert(1

===

arguments[0])

}

f1(a)

alert(":"+a)首先你要知道函数内部有自己的作用域,在函数内部申明的变量只在函数内部才可见然后再看你这个问题,首先你申明了a=10这么一个全局变量,然后把a作为参数传入f1这个函数内部,其实问题就在这里了如果你不把a作为参数传入f1这个函数,你可以看到全局变量的值已经被从10改变为了1,这是因为函数内部未用var申明的变量就是全局变量作用域也是全局,所以全局变量a的值会被函数f1改变那为什么把a作为参数传入f1这个函数后,a这个全局变量的值没有被改变呢?我想机制是这样的,当你把a作为参数传入函数内部时,函数会把这个参数作为函数内部的局部变量,也相当于一个申明为局部变量的过程,所以即便你在f1内部用“a

=

1”给a重新赋值,也仅仅改变的这个局部变量a的值,全局变量的值仍然是10并未被改变,这个是关键所在

查看原帖>>

要保存上一次点击修改的参数,可以使用JavaScript中的localStorage API来实现。使用localStorage API可以将参数存储在本地,并且可以在下次点击修改时调用。首先,在点击修改时,使用localStorage.setItem()方法将参数存储到本地,例如:localStorage.setItem('parameterName', parameterValue);其次,在下次点击修改时,使用localStorage.getItem()方法获取参数,例如:localStorage.getItem('parameterName')。最后,在获取到参数后,可以根据需要进行相应的操作。

解决的办法很简单!

var time;

function(){time = a}function pause(){time=a}function restart(){time=b}

把time的声明放在最上面不被函数包含了就程了全局变量了!想怎么改都行了!