首页 > 在javascript中delete问题

在javascript中delete问题

var b = 44;
console.log(window.b);
console.log(b);
delete b;
console.log(b);
console.log(window.b);

如上所示为什么delete b之后还会输出window.b和b都是44;
但是如果定义的时候直接定义b=44,就输出not defined;
知道delete是删除属性的,不是属性不能删除,但是window.b中的b是属性吧


delete是一元操作符,它用来删除对象属性或者数组元素。然而,并不是所有的属性都可以删除:
1.一些内置核心和客户端属性不能删除;
2.通过var语句声明的变量不能删除;
3.通过function语句定义的函数和函数参数也不能删除。

共有3种方式定义.全局变量:
1.在任何函数之外放置一个var语句:

var foo = value; //声明一个不可删除的全局变量

2.直接给全局对象添加一个属性。全局对象是所有全局变量的容器,在Web浏览器里,全局对象名为window:

window.foo = value;//创建全局对象的一个可删除属性

3.直接使用未经声明的变量,这被称为隐式的全局变量:

foo = value;//创建全局对象的一个可删除属性

当声明一个JavaScript全局变量时,实际上是定义了全局对象的一个属性,使用方式1创建的属性不可删除,使用方式2,3创建的属性可以删除。


delete操作符是用来删除对象成员的,对基础数据无效;
var b=44 是基础数据,delete对其无效,之所以window.b也可以输出,是因为它在全局环境下声明;
b=44 等同于window.b=44,属于对象成员,delete是可以将其删除的;

【热门文章】
【热门文章】