只需要在自定义的函数中添加参数就可以了,在函数调用的时候,传递一个参数就可以了。
无参数的自定义函数:function a(){alert (1)}
函数调用:
a() //弹出一个1
修改上面的函数,变成有参数的函数:
function a(n){alert (n)}
函数调用:
a(4) //弹出一个 4
vara=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并未被改变,这个是关键所在
查看原帖>>