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是属性吧
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操作符是用来删除对象成员的,对基础数据无效;
var b=44 是基础数据,delete对其无效,之所以window.b也可以输出,是因为它在全局环境下声明;
b=44 等同于window.b=44,属于对象成员,delete是可以将其删除的;
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
delete
是一元操作符,它用来删除对象属性或者数组元素。然而,并不是所有的属性都可以删除:1.一些内置核心和客户端属性不能删除;
2.通过
var
语句声明的变量不能删除;3.通过
function
语句定义的函数和函数参数也不能删除。共有3种方式定义.全局变量:
1.在任何函数之外放置一个var语句:
2.直接给全局对象添加一个属性。全局对象是所有全局变量的容器,在Web浏览器里,全局对象名为window:
3.直接使用未经声明的变量,这被称为隐式的全局变量:
当声明一个JavaScript全局变量时,实际上是定义了全局对象的一个属性,使用方式1创建的属性不可删除,使用方式2,3创建的属性可以删除。