首页 > 请教个JS问题:关于函数的形参。

请教个JS问题:关于函数的形参。

function test(a){
    a=10; //**********
    alert(a); // 弹出10
}
test(5);
alert(a); //报错 a is not defined

在函数体内,我写了a=10。我的理解是把10赋值给一个全局变量a,因为没有var的变量等同于全局变量。
我在函数体外,alert(a)却报错了:a is not defined。请问为什么我在函数体外不能访问到变量a呢?


a不是全局变量,如果以下函数才是全局变量

function test(){
    a=10;
}

因为在testa是你的形参,形参实际上相当于函数内的一个局部变量;你在test内给a赋值是赋值给形参a。

function test(a) {
    alert(a);
}
test(5); // 弹出5,不是很明显么

除非:

function test(b){
    a=10; // 这样才是给全局变量a 赋值
    alert(a); // 弹出10
}
test(5);
alert(a); // 10

就是2楼说的,形参实质是函数内的局部变量

【热门文章】
【热门文章】