函数的作用域

函数的作用域

函数的作用域简单来说就是变量起作用的区域;它包括全局作用域和局部作用域;
全局作用域:

// 全局作用域:不属于任何一个函数
    var a = 10;
    // 能够作用的区域,整个代码
    console.log(a)
    function fn(){
        var b = 2;
        console.log(a*b);
    }
    fn();

执行结果为:10 20 ;
这里的变量a 为既可以在函数外部被识别,也可以在函数内部被正常使用,a为全局变量,a存在于全局作用域中;
全局作用域的特点:

  • 全局作用域不属于任何一个函数
  • 全局作用域中声明的变量叫全局变量,它可以作用的区域为整个代码;

局部作用域:
任何一个函数内部都是局部作用域,同上例,函数中的b在局部作用域中声明的,那么b为局部变量,如果再函数外部使用b,结果为:b is not defined,即b不会被识别;局部作用域中声明的变量叫局部变量;

全局变量与局部变量对比:
生命周期
全局变量会一致存在与内存中;
局部变量随着函数的创建存在,函数结束时,内存释放,即从“{”到“}”;

优缺点
全局变量使用起来比较方便,但是十分消耗性能,且有安全隐患(可能重名),能少则少;
局部变量对性能消耗少,但是使用起来较为麻烦;

利用匿名函数将二者优点结合:
如果我们既想要变量使用起来方便有不消耗性能,我们就用到了匿名函数:
实际开发中,我们会在.js文件的开始即输入:
;(function(){})();
即:

;;;(function(){
        var a = "hello ";
        var b = 123;
        function fn1(){
            console.log(a);
        }

        function fn2(){
            console.log(b);
        }
        fn1();
        fn2();
    })();;;

也就是利用匿名函数包裹我们将要写的代码,前后加;号是为了将代码隔开(写几个无所谓但是要有),而且匿名函数前不加;号的话会报错;
匿名函数:

  • 自动执行;
  • 生成独立的作用域,方便分组;
    这样一来:整个匿名函数内部为一个局部作用域,我们在匿名函数内部声明的变量即为局部变量,但是这些局部变量相对于外面内部的函数来说又是全局变量,我们就有了全局变量和局部变量二者的优点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值