zoukankan      html  css  js  c++  java
  • 作用域

    作用域、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进行解析。

  • 相关阅读:
    Codeforces 1265A Beautiful String
    1039 Course List for Student (25)
    1038 Recover the Smallest Number (30)
    1037 Magic Coupon (25)
    1024 Palindromic Number (25)
    1051 Pop Sequence (25)
    1019 General Palindromic Number (20)
    1031 Hello World for U (20)
    1012 The Best Rank (25)
    1011 World Cup Betting (20)
  • 原文地址:https://www.cnblogs.com/wenwenwei/p/10017881.html
Copyright © 2011-2022 走看看