• js中的作用域


    "js解析器"

    1)"找一些东西":var function 参数

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

    f1=function f1() { alert(2); } 所有函数在正式运行代码之前,都是整个函数块

    js的预解析: 遇到重名的:只留一个. 变量和函数重名了,就只留下函数

    2)逐行解读代码:

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

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

    script:全局变量、全局函数

    函数(从里到外) 函数调用(局部)与js解析步骤相同

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            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) {  //a=>var a=1
                alert(a);// 1
                a = 2;
            }
            fn1(a);
            alert(a);//1
    
            alert(a);// function a(){alert(4);}      预解析最后为a=function a(){alert(4);}
            var a = 1;//1
            function a() { alert(2); }
            alert(a);//1
            var a = 3;
            alert(a);//3
            function a() { alert(4); }
            alert(a);//3
            a();//报错
        </script>
    </body>
    
    </html>
    
    
    
    
  • 相关阅读:
    1099. Build A Binary Search Tree (30)
    两个新事物
    time.h
    Nohup命令
    进程锁
    C++中虚析构函数的作用
    c++ 修改stl set中的元素
    STL迭代器辅助函数——advance
    CTreeCtrl 控件使用总结
    关于stl advance函数移动步数超过容器大小(越界)的研究
  • 原文地址:https://www.cnblogs.com/zhuuuu/p/7581904.html
Copyright © 2020-2023  润新知