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>

 

posted @ 2016-05-30 21:43  黑土白云  阅读(173)  评论(0编辑  收藏  举报