JS函数声明提前(1)

 var a =10;
        function pay(){
            a -=3;
            console.log(a);//7
        }
        pay();//7
        console.log(a);//7
        /*
        *函数声明提前;执行js代码前,解析器将当前作用域内声明的所有变量和函
        *数都会放到作用域的开始处
        *1 function pay(){}会提前声明;
        *2 var a=10;
        *3 pay(); 执行函数
        *4 a-=3;  a首先会在自己的函数作用域内寻找,没有就在上一层去寻找,一直到找到,如果到
        *           最底层也没找到a的声明和赋值,则报错!此时a会找到上一层的 var a=10;全局变量
        *           所以a-=3计算时候改变了全局变量的值;a-=3 此时var a =7;全局变量
        *5 函数体内 console.log(a) a=7;
        *6 外层函数 console.log(a) a=7;
         */

  var a = 10;
        function test(a){
            // 为了方便理解,可以把形参暂时改成b。传参的过程相当于var b = 10;
            a -=3;
            console.log(a);//7
        }
        test(a);//7
        console.log(a); //10
        /*
        *函数声明提前;执行js代码前,解析器将当前作用域内声明的所有变量和函
        *数都会放到作用域的开始处
        *1 function test(a){}会提前声明;
        *2 var a=10;
        *3 test(a); 执行函数 test(10);
        *4 function test(a){} 此时实参将10赋值给函数体的形参a 就是 var a=10;
        *5 a-=3  首先在自己函数域内寻找 发现var a=10; 则函数体内的局部变量var a=10-3=7;
        *6 函数体内 console.log(a) a=7;
        *7 外层函数 console.log(a);首先在自己函数域内寻找 发现var a=10; 则全局变量a=10
         */


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值