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进行解析。

  • 相关阅读:
    JavaScript 变量类型 保存内存中的位置 和 引用
    https连接过程
    微信消息自动回复 json版
    RabbitMQ安装
    nginx反向代理
    小程序接口记录
    nginx同服务器不同目录的差别配置
    nginx URL隐藏index.php
    Laravel 打印SQL语句
    laravel PostTooLargeException
  • 原文地址:https://www.cnblogs.com/wenwenwei/p/10017881.html
Copyright © 2011-2022 走看看