js的函数作用域(全局和局部变量)

1、函数作用域自身的变量若未定义,则:
先从函数自身作用域中找的变量和方法,
找不到再从外部的作用域中找。
2、若函数作用域自身的变量已在函数内部中被定义了,则:
函数内部局部的变量的赋值并不影响外部全局的变量。

注意看一下几个例子
以下几个例子有差别

 	 var a = 123;
        /**解释如下
         * fun的作用域中var a = 456处申明了a,
         * 因为申明变量会提前
         * 则实质为fun(){
         *      var a;
         *      alert(a);       //undefined
         *      a =  456;       //修改的是函数局部作用域内的a   
         * }
        */
        function fun(){
            alert(a);           //undefined
            var a= 456;			
        }
        fun();
        alert(a);           //123
	 var a = 123;
        /**
         * fun的作用域中 a = 456处并没有申明a,
         * 因为只能从外部找a的定义,
         * 则实质为fun(){
         *     
         *      alert(a);       //123
         *      a =  456;       //修改的是全局作用域内的a   
         * }
        */
        function fun(){
            alert(a);           //123
             a= 456;
        }
        fun();
        alert(a);           //456

注意在函数中有形参相当于在函数中定义了形参

  	var a = 123;
        /**
         * fun的作用域中 a = 456处并没有申明a,
         * 因为只能从外部找a的定义,
         * 则实质为fun(a){      //定义了形参var a;
         *     
         *      alert(a);       //没有值,undefined
         *      a =  456;       //是函数作用域内(局部)的a   
         * }
        */
        function fun(a){
            alert(a);           //undefined
             a= 456;		//修改的是局部变量函数作用域的a,对全局没有影响
        }
        fun();
        alert(a);           //123

        var a = 789;
        /**
         * fun的作用域中 a = 456处并没有申明a,
         * 因为只能从外部找a的定义,
         * 则实质为fun(a){      //定义了形参var a  = 123;
         *     
         *      alert(a);       //初始值为123
         *      a =  456;       //修改的是函数作用域内(局部)的a,对全局的没有影响   
         * }
        */
        function fun(a){
            alert(a);           //123
             a= 456;
        }
        fun(123);
        alert(a);           //789
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值