当前位置: 首页 > 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/news/304237.html

相关文章:

  • 研究生深度学习入门的十天学习计划------第十天
  • 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的房屋租赁管理系统设计与实现(附项目源码+论文+数据库)
  • python-游戏自动化(一)(实战-自动刷视频点赞)
  • activiti第五步流程图定义会审并设置串行用户任务
  • 在RabbitMQ中四种常见的消息路由模式
  • 电能质量监测装置和防孤岛装置在特斯拉工厂分布式光伏项目的应用
  • Node.js Express 框架
  • 6、Flume安装
  • 通信工程学习:什么是PC永久连接、SPC软永久连接
  • Open-Sora代码详细解读(2):时空3D VAE
  • 双流join
  • Vmware 傻瓜式安装( Linux 网络操作系统 01)