delete() delete 操作符用于删除对象的某个属性
var, let以及const创建的不可设置的属性不能被delete操作删除
不可配置属性configurable
当且仅当该属性的 configurable 为 true 时,该属性描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认值为true。
ES6以后除了全局对象以外还维护了一个变量名列表,专门用来存储var,let,const声明的变量,并且约定了该列表里面的变量不能被delete删除,所以a变量无法被删除。 尽管var a =1;b =2 都是全局变量,都可以通过全局对象访问到。但b不是var声明的,可被delete删除,因此访问不了 eval中声明var变量是唯一一个被添加到变量名列表同时也可以被delete删除的特例,所以删除变量c有效。