Javascript var变量删除原理及实现


Posted in Javascript onAugust 26, 2020

var有三种声明的情形:

  • var声明的全局变量
  • var在函数范围内声明的局部变量
  • eval中声明的全局变量。

首先,

1、2种情形var声明的变量是无法删除的。

尽管var声明的全局变量是属于window对象的属性(在浏览器中),但依然是无法删除的,因为这种属性的configurable=false,因此不能delete掉。

局部变量就更不用说了,连var变量依附的对象都不知道在哪里,肯定无法删除。

而eval('vara=1')看似和直接var是一样的效果(当然是在全局作用执行eval),执行完也会在window对象上创建一个a属性,但是这个属性的configurable=true,因此可以删除。

<script type="text/javascript">
  var a = 1;
  console.log(Object.getOwnPropertyDescriptor(window, 'a'));   //false
  aa=1;
  console.log(Object.getOwnPropertyDescriptor(window, 'aa'));  //true
  with({}) {
    var b = 1;
    console.log(Object.getOwnPropertyDescriptor(window, 'b')); //false
    console.log(delete b);
  }
  eval('var c = 1');
  console.log(Object.getOwnPropertyDescriptor(window, 'c'));   //true
</script>

函数不能被delete掉

Javascript var变量删除原理及实现

局部作用域中的函数也不能被delete掉

Javascript var变量删除原理及实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于JQuery的动态删除Table表格的行和列的代码
May 12 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
剖析Node.js异步编程中的回调与代码设计模式
Feb 16 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
Vue.js在使用中的一些注意知识点
Apr 29 Javascript
前端构建工具之gulp的配置与搭建详解
Jun 12 Javascript
react.js使用webpack搭配环境的入门教程
Aug 14 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 Javascript
js实现车辆管理系统
Aug 26 #Javascript
js实现飞机大战小游戏
Aug 26 #Javascript
JS面向对象实现飞机大战
Aug 26 #Javascript
JavaScript Image对象实现原理实例解析
Aug 26 #Javascript
js实现飞机大战游戏
Aug 26 #Javascript
JS+Canvas实现五子棋游戏
Aug 26 #Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 #Javascript
You might like
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
第十四节 命名空间 [14]
2006/10/09 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
初识PHP中的Swoole
2016/04/05 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Web服务器框架 Tornado简介
2014/07/16 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
python制作一个桌面便签软件
2015/08/09 Python
简单谈谈python中的语句和语法
2017/08/10 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
泰国在线书店:SE-ED
2020/06/21 全球购物
如何书写你的职业生涯规划书?
2019/06/27 职场文书
python中mongodb包操作数据库
2022/04/19 Python
Python开发五子棋小游戏
2022/04/28 Python