function test(a){ //test(a)这里的a已经是属于声明形参a
a=a+10;
}
var a=10;
test(a);
console.log(a); //10
a是形参,属于全局变量,不影响全局变量a的值,因此输出的a是全局变量的值10;test(a)传入的是实际的值;
//代码2
function test(){ //没有声明形参,所以调用的时候修改的是a的值。
a=a+10;
}
var a=10;
test();
console.log(a); //20
得到的值是20,调用函数修改的是a地址的值;
//代码3
var a = 10;
function test(b) { //形参是b,我们调用函数时a向形参b传值。然后函数a=形参b+10,修改全局a;
a = b + 10;
}
test(a);
console.log(a); //a的值为20
修改的不是形参,是全局变量,所以输出为20;
//代码4
var a = 10;
function test(b) {
var a = b + 10;
}
test(a);
console.log(a); //a的值为10
a定义在函数体里面,是局部变量。不会影响全局变量的a的值;