JS-用var声明变量和不用var声明变量的区别

当不用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:变量被删除
原文地址:https://www.cnblogs.com/fydxx/p/6668718.html