2016-05-30 函数与变量 作用域

Posted 黑土白云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于2016-05-30 函数与变量 作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS作用域作用域链

作用域与变量提升

JS---闭包

JavaScript基础_04对象与函数

函数作用域与执行上下文

JavaScript的作用域与作用域链