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 相关文章推荐
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 Javascript
30分钟就入门的正则表达式基础教程
Feb 25 Javascript
JS增加行复制行删除行的实现代码
Nov 09 Javascript
javascript模拟实现ajax加载框实例
Oct 15 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
JavaScript通过代码调用Flash显示的方法
Feb 02 Javascript
全面介绍vue 全家桶和项目实例
Dec 27 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
Vue图片裁剪组件实例代码
Jul 02 Vue.js
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
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
js实现五星评价功能
2017/03/08 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python实现图片批量剪切示例
2014/03/25 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
详解Python self 参数
2019/08/30 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
如何用Django处理gzip数据流
2021/01/29 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
养殖项目策划书范文
2014/01/13 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
心理健康活动总结
2014/04/30 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
分析Java中Map的遍历性能问题
2021/06/26 Java/Android
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL