2016-05-30 函数与变量 作用域
1. 如何访问函数内的局部变量
<script> //获取函数内部变量的两种方法 function fn1(){ var a='100000美金'; } alert(a);//报错 a isNot undefine; //解决方法1: 通过把局部变量赋值给全局变量 var str=''; function fn1(){ var a='100000美金'; str=a; } fn1();//必须先调用函数,否则里面赋值不会自动执行 alert(str);//'100000美金' //解决方式2 通过局部函数调用并传参给全局函数 function fn2(){ var a ='妹子爱吃梅子,我爱吃妹汁'; fn3(a); } function fn3(b){ alert(b); } fn2();//妹子爱吃梅子,我爱吃妹汁 </script>
2.乱七八糟的作用域
<script>
alert(a);//function a(){alert(4)}
var a=1;
alert(a);//1
function a(){//不执行,未被调用
alert(2);
}
var a=3;
alert(a);//3
function a(){//不执行,未被调用
alert(4);
}
alert(a);//3
//a();//等于3(); is not a function;
</script>
<script>
alert("a:"+a);//3,script是个全局的域,上面a初始化了,后面的可以用,反之不可以
var b=10;
function fn1(){//预解析 b为undefine
alert("b1"+b);//此处的b 与var b=1;中的b没有任何关系
var b=2;
}
fn1();//undefine;
alert("b2:"+b);//10
var c=1;
function fn2(){
alert("c1:"+c);
c=2;
}
fn2();//1
alert("c2:"+c);//2
var d=1;
function fn3(d){//预解析 b为undefine
alert("d1:"+d);
d=2;
}
fn3();//undefine
alert("d2:"+d);//1
var e=1;
function fn4(e){//预解析 b为undefine
alert("e1:"+e);
e=2;
}
fn4(e);//1
alert("e2:"+e);//1
</script>