当前位置: 首页 > article >正文

JavaScript --函数作用域变量的使用规则(局部和访问)

访问规则,就近原则

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 全局变量100
        var num = 100
        
        function test1(){
            var num = 200
            function child(){
                var num = 300
                console.log(num)
            }
            child()
        }

        test1()
    </script>
</body>
</html>

 就近原则   num 等于100

<script>
        // 全局变量100
        var num = 100

        function test1(){
            var num = 200
            function child(){
                // var num = 300
                console.log(num)
            }
            child()
        }
        test1()
    </script>

 num等于300的注释掉,往上找,所以num等于200

 

  num=300和num = 200注释掉,在往上找,所以num等于100

 <script>
        // 全局变量100
        var num = 100

        function test1(){
            // var num = 200
            function child(){
                // var num = 300
                console.log(num)
            }
            child()
        }
        test1()
    </script>

 

 赋值规则,就近原则

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 全局变量100
        // num值不改变
        var num = 100

        function test1(){
            // num值不改变
            var num = 200

            function child(){
                var num = 300
                // 只改变最近的num的值
                num = 400
                console.log(num)
            }
            child()
        }
        test1()
    </script>
</body>
</html>

 

 

<body>
    <script>
        // 全局变量100
        // num值不改变
        var num = 100

        function test1(){
            // num值变成400
            var num = 200

            function child(){
                // var num = 300
                // 只改变最近的num的值
                num = 400
                console.log(num)
            }
            console.log("修改前",num)
            child()
            console.log("修改后",num)
        }
        test1()
    </script>

 特殊情况

赋值的时候往上找找到最外层都没找到,就把这个num=400变成全局变量

<script>
        // 全局变量100
        // num值不改变
        // var num = 100

        function test1(){
            // num值变成400
            // var num = 200

            function child(){
                // var num = 300
                // 只改变最近的num的值
                num = 400
                console.log(num)
            }
            // console.log("修改前",num)
            child()
            console.log("修改后",num)
        }
        test1()
    </script>

 


http://www.kler.cn/a/304237.html

相关文章:

  • SCUI Admin + Laravel 整合
  • void * 指针与整数进行加减运算
  • MySQL远程连接错误解决:Host is not allowed to connect to this MySQL server
  • 障碍检测与避障控制 ROS2机器人
  • linux,1.NFS和autofs,2.podman容器,3.http服务和虚拟web主机,4.内网DNS服务搭建
  • [CKS] Create/Read/Mount a Secret in K8S
  • 研究生深度学习入门的十天学习计划------第十天
  • LLM 工程师入门:生成式AI的简易指南
  • 【Vue】移动端访问Vue项目页面无数据,但是PC访问有数据
  • Linux定时启动jar应用shell脚本分享
  • 基于springboot的二手物品管理系统的设计与实现 (含源码+sql+视频导入教程)
  • C语言实现一个简单的点歌系统
  • XSS和sql注入部分场景测试用例样例
  • 将复杂类型列展开成多行,附带json解析
  • pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名
  • MySQL从C盘迁移到D盘
  • Git的学习笔记
  • 服务器与个人计算机之间的区别
  • Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)
  • 【Ubuntu】Ubuntu双网卡配置 实现内外网互不影响同时可用
  • KubeCon China 回顾|快手的 100% 资源利用率提升:从裸机迁移大规模 Redis 到 Kubernetes
  • 深度学习--对抗生成网络(GAN, Generative Adversarial Network)
  • Pr 入门系列之三:挑选与添加媒体到序列(上)
  • UQpy | 不确定性量化Python工具箱推荐
  • Spring和MyBatis常见面试题总结
  • 房屋租赁|基于springboot的房屋租赁管理系统设计与实现(附项目源码+论文+数据库)