作用域

作用域

  1. 两个不同的script标签,先执行完前一个的全部代码,再往下,前一个里面定义了的变量,后面的就可以使用.
  2. script是最大的域.
    函数执行就是一个域.

js解析过程

  1. 定义:
    var 定义变量. 只定义变量名.
    function(){}定义,找出函数整体.
  2. 执行:
    除了定义 , 都是执行 , 从上往下.

例子

<script type="text/javascript">
    alert( a );
    var a = '阿';
    alert( a ); 
    /*
    1.定义
        var a;  
    2.执行
        alert( a );//undefined
        a = '阿';
        alert( a );//阿
    */
</script>           
<script type="text/javascript">
    fn();
    function fn(){
        alert('HELLO!');
    };

    /*
    1.定义
        function fn(){
            alert('HELLO!');
        };

    2.执行
        fn();
    */
</script>

作用域的判断:

  • 每个函数执行时,会产生一个新的作用域 .
  • 每遇到一个作用域,都会重新开始 定义和执行 .

作用域链:

  • 每一个作用域,当要找某个变量或者函数时,先从自身找,自身没有的话,往上找(父或爷-作用域);
  • 一直都找不到的话,报错;
  • 只能从子作用域往父作用域找,不能父作用域往子作用域找 .
<script type="text/javascript">
    var x = 5;
    a();
    function a(){
        alert( x );
        var x = 10;
    };
    alert( x );
    /*
        1.定义:
            var x;
            function a(){
                alert( x );
                var x = 10;
            };
        2.执行:
            x = 5;
            a();   ===>   1.定义:
                                var x;
                          2.执行:
                                alert( x ); //undefined
                                x = 10;
            alert( x ); // 5
    */
</script>

函数和var变量同名的时候,函数为准:

<script type="text/javascript">
    function a(){
        alert( 1 );
    };

    var a;

    alert( a );//函数块--无关顺序
</script>
<script type="text/javascript">
    var a = 10;
    alert( a );
    a();
    function a(){
        alert( 20 );
    };

    /*
        1.定义:
            function a(){
                alert( 20 );
            };
        2.执行:
            a = 10; //赋值
            alert( a ); //10
            a(); //数字加括号,报错
    */
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值