最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascript显示全局变量与隐式全局变量的区别

来源:动视网 责编:小采 时间:2020-11-27 20:25:16
文档

javascript显示全局变量与隐式全局变量的区别

javascript显示全局变量与隐式全局变量的区别:这篇文章主要介绍了javascript 显示全局变量与隐式全局变量的区别,需要的朋友可以参考下在JavaScript中,全局变量有两种声明方式使用 var 显示声明的全局变量不使用 var 声明的隐式全局变量两者的区别在于是否能通过 delete 操作符删除先看一段代码var
推荐度:
导读javascript显示全局变量与隐式全局变量的区别:这篇文章主要介绍了javascript 显示全局变量与隐式全局变量的区别,需要的朋友可以参考下在JavaScript中,全局变量有两种声明方式使用 var 显示声明的全局变量不使用 var 声明的隐式全局变量两者的区别在于是否能通过 delete 操作符删除先看一段代码var


这篇文章主要介绍了javascript 显示全局变量与隐式全局变量的区别,需要的朋友可以参考下

在JavaScript中,全局变量有两种声明方式

  • 使用 var 显示声明的全局变量

  • 不使用 var 声明的隐式全局变量

  • 两者的区别在于是否能通过 delete 操作符删除

    先看一段代码

    在 js 中全局变量其实是global对象(window)的属性,因此两种方式声明的全局变量都可以通过 window 拿到

    尝试用 delete 删除

    delete 操作符可以删除一个对象的属性,但如果属性是一个不可配置(non-configurable)属性,删除时则会返回 false(严格模式下会抛出异常)

    这就表示使用 var 声明的变量是不可配置的,使用 getOwnPropertyDescriptor 来获取描述属性特性的对象来验证这一点

    两者的根本区别在于显式声明的变量不可配置,不能通过 delete 操作符删除

    需要注意的是 configurable 值一旦为 false,描述属性特性的对象就不能被修改,因此不能通过修改属性描述符使得显示声明的全局变量能被 delete 删除,但反过来,可以使隐式声明的全局变量也不能被 delete 删除

    以下是其他网友的补充

    JavaScript之全局变量和隐式全局变量

    隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。

    1、通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
    2、无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。

    这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的:

    在浏览器中,全局对象可以通过window属性在代码的任何位置访问(除非你做了些比较出格的事情,像是声明了一个名为window的局部变量)。但是在其他环境下,这个方便的属性可能被叫做其他什么东西(甚至在程序中不可用)。如果你需要在没有硬编码的window标识符下访问全局对象,你可以在任何层级的函数作用域中做如下操作:

    这种方法可以随时获得全局对象,因为其在函数中被当做函数调用了(不是通过new构造),this总 是指向全局对象。实际上这个病不适用于ECMAScript 5严格模式,所以,在严格模式下时,你必须采取不同的形式。例如,你正在开发一个JavaScript库,你可以将你的代码包裹在一个即时函数中,然后从 全局作用域中,传递一个引用指向this作为你即时函数的参数。

    文档

    javascript显示全局变量与隐式全局变量的区别

    javascript显示全局变量与隐式全局变量的区别:这篇文章主要介绍了javascript 显示全局变量与隐式全局变量的区别,需要的朋友可以参考下在JavaScript中,全局变量有两种声明方式使用 var 显示声明的全局变量不使用 var 声明的隐式全局变量两者的区别在于是否能通过 delete 操作符删除先看一段代码var
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top