当不用var声明一个JavaScript全局变量时,实际上是定义了全局对象的一个属性。(在客户端的JavaScript中,在浏览器窗口中的所有JavaScript代码中,Window对象充当了全局对象。)
当使用var声明一个变量时,创建的这个属性是不可配置的,也就是说这个变量无法通过delete运算符删除。如果你没有使用严格模式并给一个未声明的变量赋值的话,JavaScript会自动创建一个全局变量。以这种方式创建的变量时全局对象的正常的可配置属性,并可以删除他们。
var var_true = 1; // 声明一个不可删除的全局变量 var_fake = 2; // 创建全局对象的一个可删除的属性 this.var_fake2 = 3; // 同上 delete var_true //=> false:变量无法被删除 delete var_fake //=> true:变量被删除 delete this.var_fake2 //=> true:变量被删除