• 关于作用域


    关于作用域,可能大家都在用,但是真正能说的清楚的却不多,我呢也只是简单谈一下我所了解的比较浅的认识。

    作用域顾名思义可以分“作用”和“域”:

    域:空间、范围、区域……

    作用:读、写

    我们写的s内容都知道是在<script></script>里面,其实这就相当于是一个作用域,而在这个作用域里的内容还分为全局变量和局部变量。我们所写的js呈现出的好多效果主要是靠js解析器来解析的,是自上而下,由里到外一步步的进行的。

    js解析器的主要工作原理是:

    1)“找一些东西” :var function 参数
            a = ...

            所有的变量,在正式运行代码之前,都提前赋了一个值:未定义

            fn1 = function fn1(){ alert(2); }

            所有的函数,在正式运行代码之前,都是整个函数块

            JS 的预解析

            遇到重名的:只留一个

            变量和函数重名了,就只留下函数

    2)逐行解读代码:

            表达式:= + - * / % ++ -- ! 参数……

            表达式可以修改预解析的值!

    接下来写几个简单的例子,来看看通过js解析器有规律,有顺序的解析之后返回的值是什么:

    alert(a);                    // function a (){ alert(4); }
    var a = 1;
    alert(a);                    // 1
    function a (){ alert(2); }
    alert(a);                    // 1
    var a = 3;        
    alert(a);                    // 3
    function a (){ alert(4); }
    alert(a);                    // 3
    var a = 1;
    function fn1(){
        alert(a);                        // undefined
        var a = 2;
    }
    fn1();
    alert(a);                            // 1
    var a = 1;
    function fn1(){
        alert(a);                        // 1
        a = 2;
    }
    fn1();
    alert(a);                            // 2
    var a = 1;
    function fn1(a){
        alert(a);                        // undefined
        a = 2;
    }
    fn1();
    alert(a);                            // 1
    var a = 1;
    function fn1(a){
        alert(a);                        // 1
        a = 2;
    }
    fn1(a);
    alert(a);                            // 1

     以上例子,通过js解析器的逐步解析将得出不同的结果,当然前提还是遵循以上所提到的两个规则。

    所以,一定要熟练掌握其中的精髓,好清楚了解有些js产生的不同结果。有点拗口,但是还是希望大家对你有帮助!加油!

  • 相关阅读:
    为什么
    android自定义控件,其三个父类构造方法有什么区别
    MocorDroid编译工程快速建立编译环境
    通话挂断后如何提示用户通话时长
    incallui中如何查询联系人数据
    protected-broadcast的作用
    ubuntu12.04安装openjdk-7
    Android JNI的使用浅析
    android listen
    android:minSdkVersion的总结
  • 原文地址:https://www.cnblogs.com/web001/p/8012924.html
Copyright © 2020-2023  润新知