美文网首页
隐式全局变量与显示全局变量区别

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

作者: AAA前端 | 来源:发表于2021-09-30 17:02 被阅读0次

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

  • 通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
  • 无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。
var f1 = 1;
f2 = 2;
(function(){
  f3 = 3
})();

delete f1;
delete f2;
delete f3;

typeof(f1); // number
typeof(f2); // undefined
typeof(f3); // undefined

Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)

Object.getOwnPropertyDescriptor(window, 'f1')
{value: 1, writable: true, enumerable: true, configurable: false}

Object.getOwnPropertyDescriptor(window, 'f2')
{value: 2, writable: true, enumerable: true, configurable: true}

可以看到f1的configurable为false,不能被删除;

相关文章

  • 隐式全局变量与显示全局变量区别

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

  • 域解析

    函数变量及作用域 隐式全局变量:变量没有声明,直接赋值,执行到时,浏览器才会偷偷把变量提升为隐式全局变量 全局作用...

  • JavaScript的坑总结

    1、少用全局变量 尤其少使用隐式全局变量定义 (变量名 = 值 不写var) **当使用全局变量的时候,在作用域的...

  • JavaScript use strict 严格模式的限制

    1、引用全局变量时 非严格模式 会隐式的创建引用且没有定义的全局变量 严格模式 ...

  • 记录一下JS的小知识点

    1.严格模式和非严格模式的区别 严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with, ...

  • staic和bridge

    1.static全局变量与普通的全局变量有什么区别?:static全局变量只初使化一次,防止在其他源文件中被引用;...

  • static全局变量与普通的全局变量有什么区别

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; s...

  • 编写高质量js要点--读汤姆大叔博客笔记

    全局变量的问题 javasript有隐含的全局概念,意味着不声明的任何变量都会成为一个全局对象属性(隐式全局变量)...

  • 你真的理解static吗?

    static修饰的全局变量与普通的全局变量的区别static修饰的局部变量和普通局部变量的区别static修饰的函...

  • C/C++知识点分享(16)

    1、statac全局变量、局部变量、函数与普通全局变量、局部变量、函数,static全局变量与普通的全局变量有什么...

网友评论

      本文标题:隐式全局变量与显示全局变量区别

      本文链接:https://www.haomeiwen.com/subject/vyvenltx.html