在javascript中delete问题
天蓬老师
天蓬老师 2017-04-10 16:11:00
[JavaScript讨论组]

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是属性吧

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
巴扎黑

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创建的属性可以删除。

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号