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 点击按钮弹出另一页,选择值后,返回到当前页
May 26 Javascript
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
Jun 23 Javascript
jQuery中index()的用法分析
Sep 05 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
vue项目base64字符串转图片的实现代码
Jul 13 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
Python实时获取cmd的输出
2015/12/13 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python中list初始化方法示例
2016/09/18 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python实现随机漫步方法和原理
2019/06/10 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
大学生通用个人的自我评价
2014/02/10 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
学校安全生产承诺书
2014/05/23 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
师德师风个人整改措施
2014/10/27 职场文书
2014年部门工作总结
2014/11/12 职场文书
个人培训总结
2015/03/05 职场文书
写给同事的离职感言
2015/08/04 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS