JavaScript 作用域

一、作用域

(一)作用域概述

1、通常来说,一段代码程序中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字的冲突。

2、JavaScript作用域:就是代码名字(变量)在某个范围内起作用和效果。目的是为了提高程序的可靠性更重要的是减少命名冲突。
3、js的作用域(es6)之前:全局作用域  局部作用域
4、全局作用域:整个script标签 或者是一个单独的js文件
        var num = 10;
        console.log(num);
5、局部作用域(函数作用域):在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用
        function fn() {
            //局部作用域
            var num = 20;
            console.log(num);
        }
        fn();
二、变量的作用域
(一)变量作用域的分类
1、在JavaScript中,根据作用域的不同,变量可以分为两种
(1)全局变量
(2)局部变量
(二)全局变量
1、全局变量:在全局作用域下的变量 在全局下都可以使用
2、注意:如果在函数内部 没有声明直接赋值的变量也属于全局变量(不建议使用)
        var num = 10;//num就是一个全局变量
        console.log(num);

        function fn() {
            console.log(num);
        }
        fn();
(三)局部变量
1、局部变量:在局部作用域下的变量  后者在函数内部的变量就是 局部变量
2、注意:函数的形参也可以看做是局部变量
        function fun() {
            var num1 = 10; //num1就是局部变量 只能在函数内部使用
            num2 = 20;
        }
        fun();
        // console.log(num1);
        console.log(num2);
(四)全局变量和局部变量的区别
(1)全局变量:在任何一个地方都可以使用,只有浏览器关闭的时候才会销毁,比较占内存空间
(2)局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化; 当代码块运行结束后,就会被销毁,因此更节约内存空间
(五)JS没有块级作用域
1、js中没有块级作用域  js的作用域:全局作用域 局部作用域  现阶段我们js 没有 块级作用域
2、我们js 也是在 es6 的时候新增的块级作用域
3、块级作用域 {}  if {}  for {}
        java
        if(xxx) {
            int num = 10;
        }
        //外面的是不能调用num的
 
        if(3<5) {
            var num = 10;
        }
        console.log(num);
三、作用域链
1、只要是代码,就至少有一个作用域
2、写在函数内部的局部作用域
3、如果函数中还有函数,那么在这个作用域中就又诞生了一个作用域
4、根据在内部函数可以访问外部函数变量这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @   燕归楼  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示