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写fadeTo示例代码
Feb 21 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
Oct 17 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
Jan 31 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 Javascript
javascript实现简易的计算器
Jan 17 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 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
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
详解python中executemany和序列的使用方法
2017/08/12 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
python实现电子书翻页小程序
2019/07/23 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
说出数据连接池的工作机制是什么?
2013/04/19 面试题
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
建筑学推荐信
2013/11/03 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
百年校庆节目主持词
2014/03/27 职场文书
体育节口号
2014/06/19 职场文书
会计学毕业生求职信
2014/06/25 职场文书
小马王观后感
2015/06/11 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书