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 相关文章推荐
js控制表单奇偶行样式的简单方法
Jul 31 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
Oct 17 Javascript
Easyui form combobox省市区三级联动
Jan 13 Javascript
jquery.validate提示错误信息位置方法
Jan 22 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
Mar 01 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
Sep 10 Javascript
5种 JavaScript 方式实现数组扁平化
Oct 05 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
详解Scrapy Redis入门实战
2020/11/18 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
消防先进事迹材料
2014/02/10 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js