千家信息网

JavaScript作用域的示例分析

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章给大家分享的是有关JavaScript作用域的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。作用域作用域(Scope)简单的说就是变量,函数和对象定义后其可
千家信息网最后更新 2024年11月24日JavaScript作用域的示例分析

这篇文章给大家分享的是有关JavaScript作用域的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    作用域

    作用域(Scope)简单的说就是变量,函数和对象定义后其可用的范围。

    console.log(a){    var a=1;}function test(){     var b=2;}

    可以看出在外面无法使用变量b。可以看出作用域可以保护数据不会被外部随意访问,以及修改。简单可以看出作用域可以相互隔离彼此的变量,也就是说在不同的作用域下的同名变量不会冲突。

    而作用域最重要常用的是全局作用域和函数作用域。不过ES6之后因为let 和const关键字的出现又引如了一个块级作用域。

    全局作用域

    全局作用域简单说就是所有域都可以访问器域下变量以及方法对象。

    var a="全局1"; function test(){    b="没有带var,隐式转变为全局变量";    window.c="直接将变量c作为window下也会变全局";    var d="非全局作用域"; } #第一步 执行test()test()  #这样才会将方法内的变量进行定义以及赋值#第二步console.log(a)console.log(b)console.log(c)console.log(d)

    一般来说window的属性都是全局变量,而window.c 其实式将c作为一个window的属性来对待。注意一点在声明变量的时候不要带var ,最好是带着var,这样不会将其提升成全局变量,导致数据会被相互污染。

    补充说一句,test这个方法也是全局域下的方法。

    function test(){    var a= function(){        console.log("字面量的方法")    }    b=function(){        console.log("不带var字面量的方法")    }    function test1(){       console.log("普通声明方法")   }     }

    这个可以看出字面量声明的方法,类似一个可以看成一个将函数赋值给一个变量,将其作为一个变量来对待。前面预编译的时候也演示过了。

    函数作用域

    函数作用域与全局作用域相反,其不是为所有的地方用,而是在一定的范围用,一般声明的变量,只在函数内部使用。

    function test(){     var a="非全局作用域";     console.log(a)}

    现在又有了一个问题,全局方法里面可以用函数作用域内部的变量。那么函数是内部是否可以有其下面的函数生成的函数作用域呢?以及其变量是否可以相互用?

    function test(){     var a="test方法作用域";    function test1(){         var b="test1方法作用域";        console.log("a的值=",a);    }    # 调用函数内部函数    test1();     console.log("b的值=",b); }

    这个地方可以看出作用域是分层的,内层作用域可以访问外层作用域的变量,外部访问不了内部的变量。

    if,switch,for ,while

    条件语句和逻辑循环,**它们不是函数同样也不像函数,也不会创建一个新的作用域。**其块定义的变量将保留在它们存在的作用域中。

    function test(a){    if(a>1){        var b=13;    }else{       var b=1;      }    console.log(b);}

    所以在使用条件语句和逻辑循环的时候,尽可能不要再全局作用域下使用。因为其方法体中的变量会影响其他的数据。

    块作用域

    块作用域的出现,一般需要依赖两个关键字let或const之一,不然就不会存在这个块作用域。

    function test(a){    const b="23";    if (a>2){        const c=3        console.log("第一个人if---c-----",c)    }    if (a>1){        console.log("第二个人if----b----",b)        console.log("第二个人if----c----",c)    }     }

    可以看出如果有关键字let和const后,其变量的范围就是在其声明的那一对花括号内。所以第一个if中的c变量再第二个if的里面无法取得。当然还是遵守:内层作用域可以访问外层作用域的变量。

    了解let和const看前一篇:地址

    作用域链

    这个看似很神奇的概念,简单的说就是作用域内有就直接用,没有找上一层,如果都没有,找到全局就结束。

    var a=1var b=3function test(){    var a=2    console.log("a的值",a);    console.log("b的值",b);}

    感谢各位的阅读!关于"JavaScript作用域的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    作用 变量 函数 全局 方法 就是 关键 关键字 字面 数据 时候 范围 示例 分析 内容 内层 地方 外层 对象 属性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津语音网络技术服务技术 vf数据库删除多行 监控程序执行数据库 手机桌面数据库打不开怎么办 完美平台怎么查服务器是哪个 网络技术开发职业规划 三级数据库技术真题合集 中专学软件开发哪个学校好 导入数据库乱码怎么解决 增加服务器是什么问题 如何建立数据库用户 网络技术应用会考试题 软件开发做哪个行业的工资高 qt5数据库链接多线程 软件开发期间如何保密 电脑函数数据库 湛江自主可控软件开发价目表 初级网络安全工程师学什么 2021网络安全技术教程 运城触摸互动软件开发公司 服务器的安全证书已过期 东方电子口岸安全数据库 完美平台怎么查服务器是哪个 数据存储和服务器关系 网络安全讲解大全 网络安全法所称网络安全是指什么 lol服务器延迟高 上海金缶网络技术有限公司 音乐怎么开启线上服务器 郑州三级分销软件开发
    0