关于js中的delete无法删除var定义的变量的问题
这个issue是 #22 中的一个小问题的展开,那个小问题是delete无法删除var定义的变量,详细的问题如下
================================================ 我有去查看阮一峰的《javascript标准参考教程》中关于变量这一节,中提到
严格地说,var a = 1 与 a = 1,这两条语句的效果不完全一样,主要体现在delete命令无法删除前者。不过,绝大多数情况下,这种差异是可以忽略的
意思是说delete无法删除var定义的变量,可以删除不用var定义的变量, 测试一下
var test123 = 'good'; //var定义一个变量
delete test123; //返回false,表示删除失败
test123; //返回‘good’
test456 = ‘good2’;
delete test456; //返回true,表示删除成功
test456; // Uncaught ReferenceError: test456 is not defined 因为test456已经被删除了
关于delete的问题不再这个issue下展开,另开一个issues
===================================================== 查找到一个很好的资料解释这个问题:深入详解javascript之delete操作符 回头整理
解释上面的问题,为什么delete无法删除var定义的变量,可以删除不用var定义的变量 关联issue #59 查看阮一峰js教程中属性描述对象
configurable 可配置性决定了一个变量是否可以被删除 当使用var命令声明变量时,变量的configurable为false 而不使用var命令声明变量时(或者使用属性赋值的方式声明变量) 这种差异意味着,如果一个变量是使用var命令生成的,就无法用delete命令删除。也就是说,delete只能删除对象的属性
可以看下这篇,delete讲的很详细 https://www.w3cplus.com/javascript/deep-in-delete.html