zoukankan      html  css  js  c++  java
  • js关于函数全局变量和局部变量的区分

    大家在js里写函数时,可能会出现局部变量和全局变量搞不清楚的情况!!(以下总结了几道题,搞懂即可!)
        1.  
        var a = 10;  //全局   100
        function fn() {
            a = 100;  // 全局    先找函数中有没有变量声明/形式参数  有=>局部变量(不影响全局)  没有=>向外跳一层找全局的
            console.log("函数内的a:", a);  //100
        }
        console.log("函数外的a:", a); // 10
        fn();
        console.log("函数外的a:", a); // 100


        2.
        var a = 10;  // 全局
        function fn() {
            var a = 100;  //局部
            console.log(a);  // 100
        }
        fn();
        console.log(a); //10

        2.1
        var a = 10;  // 全局   
        function fn() {
            // var a;  => 函数执行之前也会预编译  => 变量提升
            a = 100;   // 局部变量 先找函数中有没有变量声明/形式参数  有=>局部变量(不影响全局)  没有=>向外跳一层找全局的
            console.log(a);  //100

            var a = 1332;
        }
        fn();
        console.log(a); // 10


        3. 
        var a = 10;  //全局
        function fn(a) {
            a = 100;  // 局部
            console.log(a);  //100
        }
        fn(10);
        console.log(a);

        var a = 10;  //全局   100
        function fn() {
            a = 100;  // 全局
            console.log(a);  //100
        }
        fn(10);
        console.log(a); //100



        console.log(a);   // 报错
        a = 100;
        console.log(a);

        function fn() {
            a = 200;
            console.log("我是函数里的a:", a);
        }

        fn();
        console.log("我是函数外的a:", a);


        4.
        var a = b = 10;    // 全局  10  20

        b = 10;
        var a = b;

        function fn() {
            var a = b = 20;  // 

            b = 20;       // 全局   20
            var a = b;    // 局部   20

            console.log("函数内:", a, b); //20 20
        }

        fn();
        console.log("函数外", a, b); // 10  20


        5.1 
        var a = 10; // 全局  10
        function fn() {
            var a = 100;  // 局部 100
            console.log("函数内:", a);//100

            c();

            function b() {
                var a = 1000;
                c();
            }
            b();
        }

        function c() {
            console.log("c里面的a", a);  //10   先找函数中有没有变量声明/形式参数  有=>局部变量(不影响全局)  没有=>向外跳一层找全局的
        }

        fn();

        var a = 10;   // 全局
        function fn() {
            var a = 100;  // 局部
            console.log("函数内:", a);  // 100

            c();

            function c() {
                console.log("c里面的a", a); //100  先找函数中有没有变量声明/形式参数  有=>局部变量(不影响全局)  没有=>向外跳一层找fn的作用域
            }
        }

        fn();
        console.log("函数外:", a);//  10
  • 相关阅读:
    Linux写时拷贝技术(copy-on-write)
    crontab使用进程锁解决冲突
    Better Linux Disk Caching & Performance with vm.dirty_ratio & vm.dirty_background_ratio
    精确度量Linux下进程占用多少内存的方法
    在Linux系统的服务器上使用Memtester进行内存压力测试
    How to speed up insertion performance in PostgreSQL
    Mongo的备份和恢复(mongodump 和mongorestore )
    MongoDB:删除操作
    MongoDB插入数据的3种方法
    Centos 软连接和硬链接
  • 原文地址:https://www.cnblogs.com/yujiawen/p/14029377.html
Copyright © 2011-2022 走看看