js作用域相关问题

来源:互联网 发布:java 线程间共享数据 编辑:程序博客网 时间:2024/06/05 09:56
<script type="text/javascript">    //通过JS内置函数创建函数        var func=new Function('a','b','return a+b');        // alert(func(3,5));//8        var func1=function(a,b){return a+b};        alert(func1(1,5));//6    //作用域链        var a=1;        function test(){            var b=2;            return a;        }        alert(test());//1        alert(b);//not defined    //还是作用域链        var a=1;        function test(){            var b=2;            function test1(){                var c=3;                alert(b);                return c;            }            test1();        }        test();    //词法作用域   f1和f2是两个不同的词法环境      function f1(){        var a=1;        return f2();    }    function f2(){        return a;    }    alert(f1());//a is not defined    function f1(){        var a=1;        return f2();    }    function f2(){        var b=3;        return a;    }    alert(f1());//undefined    var a=55;    alert(f1());//55,因为这时读到的a=55是全局变量//---------------------------------------------    function f(){        var a='king';        alert(a);        return 11;    }    var test= f();    alert(test)//这时test只是一个变量 11;    function f(){        var a='king';        return function(){            return a;        }    }    alert(a);//访问不到    var test=f();//则test是一个函数,就是f()返回的那个函数;test就等于f()的返回值;    alert(test());//弹出f() retrun返回的那个匿名函数中返回的a;//-------------------------------------------------    //这是另一种方法 全局变量法        var n;        function f(){            var a='king';            n=function(){                return a;            }        }        f();//先调用,才会改变n的值        alert(n());    //传参数法    function f(param){        var n=function(){            return param;        }        param++;        return n;    }    var test=f(456);    alert(test());    </script>
0 0
原创粉丝点击