• 作用域


    作用域、JS预解析、表达式

    1. 作用域:在一定范围内起作用。(一个函数就是一个作用域)
    2. JS预解析:变量(var a)、函数(函数块)、参数
    3. JS执行代码:在预解析完成以后,执行 表达式。函数声明不能改变值。
    4. 表达式:能改变值;函数声明不能改变值。
    5. 局部与全局:局部变量、函数(函数内);全局变量、函数(标签内)。
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    <script>
    // 作用域:
    // 域:空间、范围、区域……
    // 作用:读、写
        script      全局变量、全局函数
            自上而下
    
        函数
            由里到外
        {}
        浏览器:
            “JS解析器”
                1)“找一些东西”   :var  function 参数
                                a = ...
                                        所有的变量,在正式运行代码之前,都提前赋了一个值:未定义
                                fn1 = function fn1(){ alert(2); }
                                        所有的函数,在正式运行代码之前,都是整个函数块
                                JS 的预解析
                            遇到重名的:只留一个
                                变量和函数重名了,就只留下函数                     
                2)逐行解读代码:
                            表达式:= + - * / % ++ -- ! 参数……    
                            表达式可以修改预解析的值!
    
    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
    
    alert( typeof a );
    // a();                                 // 报错
    */
    
    /*
    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
    */
    </script>
    </head>
    <body>
    </body>
    </html>
    

    数据传输:全局获取局部;局部获取局部;局部获取全局

    1. 全局获取局部:定义新的全局变量。
    2. 局部获取局部:传参。
    3. 局部获取全局:直接使用全局变量,默认获取。
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    
    <script>
    
    
    
    //全局获取局部:定义新的全局变量
    var str = '';
    function fn1(){
        var a = '大鸡腿~';
        str = a;
    }
    fn1();
    // alert( str );
    
    
    
    //局部获取局部:传参
    function fn2(){
        var a = '9999999克拉钻石23456789';
        fn3(a);
    }
    fn2();
    
    function fn3(a){
        alert(a);
    }
    
    </script>
    
    </head>
    
    <body>
    </body>
    </html>
    

    if(){} for(){} 内尽量不要包含function。火狐内不能对if for 内的function进行解析。

  • 相关阅读:
    201521123076《java程序设计》第四次总结
    201521123076《java程序设计》第三周学习总结
    201521123076《Java程序设计》第2周学习总结
    软件工程网络15个人阅读作业2
    软件工程网络15个人作业1
    java程序设计----学生基本信息管理系统
    201521123070 《JAVA程序设计》第14周学习总结
    201521123070 《JAVA程序设计》第13周学习总结
    201521123070 《JAVA程序设计》第12周学习总结
    201521123070《Java程序设计》 第11周学习总结
  • 原文地址:https://www.cnblogs.com/wenwenwei/p/10017881.html
Copyright © 2020-2023  润新知