• javascript-初级-day06作用域、JS预解析机制


    <!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>
    
    
    
    
    
    
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    
    <script>
    
    /*
    var num = 0;
    
    function fn1(){
        num++;
    }
    function fn2(){
        num--;
    }
    
    fn2();
    fn1();
    fn2();
    alert(num);
    */
    
    // 想要获取函数内的值:
    
    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>
    
    
    
    
    
    
    
    
    
    
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    
    <script>
    
    // alert(a);            // ...
    alert( fn1 );        // FF 不能对下面的函数进行预解析
    
    var a = 1;
    function fn1(){
        alert(123);
    }
    
    if( true ){
        
    }
    
    
    </script>
    
    </head>
    
    <body>
    </body>
    </html>
    
    
    
    
    
    
    
    
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    
    <script>
    window.onload = function (){
        var aBtn = document.getElementsByTagName('input');
        
        for( var i=0; i<aBtn.length; i++ ){
            aBtn[i].onclick = function (){
                
                // alert( i );            // 3
                
                for( var i=0; i<aBtn.length; i++ ){
                    aBtn[i].style.background = 'yellow';
                }
                
                QQ: 1056104999
                bbs.miaov.com
                
            };
        }
    };
    </script>
    
    </head>
    
    <body>
    
    <input type="button" value="按钮1" />
    <input type="button" value="按钮2" />
    <input type="button" value="按钮3" />
    
    </body>
    </html>
  • 相关阅读:
    Dubbo之SPI实现原理详解
    Java SPI详解
    Java是如何实现自己的SPI机制的
    Dubbo的负载均衡原理解析
    Dubbo公开课
    【todo】什么是沟子函数
    一步一图,带你走进 Netty 的世界!
    https://github.com/xiaojiaqi/k8seasy_release_page
    mysql 8.0导致5.6数据后 :ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist
    Ansible 日常使用技巧
  • 原文地址:https://www.cnblogs.com/q1359720840/p/10430598.html
Copyright © 2020-2023  润新知