js作用域相关问题

<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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值