Javascript var变量删除原理及实现
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掉

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. python+excel接口自动化获取token并作为请求参数进行传参操作2. docker /var/lib/docker/aufs/mnt 目录清理方法3. Vuex localStorage的具体使用4. python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例5. Notepad++如何安装Python插件?Notepad++插件怎么装?6. 详解JAVA设计模式之代理模式7. 6个常见的 PHP 安全性攻击实例和阻止方法8. 《CSS3实战》笔记--渐变设计(三)9. Python matplotlib画图时图例说明(legend)放到图像外侧详解10. ASP.NET泛型三之使用协变和逆变实现类型转换

网公网安备