delete操作符来删除一个隐式声明的全局变量,也就是没有使用var定义的全局变量.

如果delete操作符删除成功, 则被delete的属性已从所属的对象上彻底消失, 随后,该对象的原型上可能存在的一个同名属性会被继承.

一些对象的属性不能被delete. ECMA 262 规范中把这些属性标记为DontDelete.

x = 42;        // 隐式声明的全局变量
var y = 43;    // 显式声明的全局变量
myobj = new Number();
myobj.h = 4;    // 添加属性h
myobj.k = 5;    // 添加属性kdelete x;       // 返回 true (隐式声明的全局变量可以被删除)
delete y;       // 返回 false (显式声明的全局变量不能被删除,该属性有DontDelete标记)
delete Math.PI; // 返回 false (内置对象的内置属性不能被删除, 该属性有DontDelete标记)
delete myobj.h; // 返回 true (用户定义的属性可以被删除)
with(myobj) { delete k;    // 返回 true (相当于delete myobj.k)
}
delete myobj;   // 返回 true (隐式声明的全局变量可以被删除)

你不能删除一个对象从原型继承而来的属性(不过你可以从原型上直接删掉它).

function Foo(){}Foo.prototype.bar = 42;var foo = new Foo();delete foo.bar;           // 无效的操作alert(foo.bar);           // alerts 42, 继承的属性delete Foo.prototype.bar; // 直接删除原型上的属性alert(foo.bar);           // alerts "undefined",已经没有继承的属性

当你删除一个数组元素时,数组的length属性并不会变小.当用delete操作符删除一个数组元素时,被删除的元素已经完全不属于该数组.

var trees = ["redwood","bay","cedar","oak","maple"];
delete trees[3];
if (3 in trees) {// 不会执行到这里
}

如果你想让一个数组元素的值变为undefined而不是删除它,可以使用 undefined给其 赋值而不是使用delete操作符.

var trees = ["redwood","bay","cedar","oak","maple"];
trees[3]=undefined;
if (3 in trees) {// 会执行到这里
}

JavaScript知识点之:delete操作符相关推荐

  1. 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!

    呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!! ✴️大家好,我是王同学,爆肝三天三夜王同学把JavaScript 知识点梳理了一遍,文章没有一点套路,只有满满的干货 ✴️如果对你 ...

  2. 浅谈Javascript中的void操作符

    由于JS表达式偏啰嗦,于是最近便开始采用Coffeescript来减轻负担.举个栗子,当我想取屋子里的第一条dog时,首先要判断house对象是否存在,然后再判断house.dogs是否存在,最后取h ...

  3. 小白学小程序需要的JavaScript知识点

    小白学微信小程序需要的JavaScript知识点 文章目录 小白学微信小程序需要的JavaScript知识点 1 js数据类型 Number 字符串 布尔值 数组 对象 null和undefined ...

  4. javascript知识点_一点点JavaScript知识是第1部分很危险的事情

    javascript知识点 几乎是一个数据库的奇怪故事 (The Strange Tale of the Almost-a-Database) 这不是教程,这是一个警告性的故事. (This is n ...

  5. 在 JS 中要尽量避免使用 delete 操作符

    目录 一.delete 操作符灵魂六问 1.delete 的返回值是什么? 2.delete 删除不存在的属性返回值是什么? 3.delete 能不能删除原型上的属性? 4.delete 能否删除变量 ...

  6. Javascript全局变量和delete

    首先看一段代码: // 定义三个全局变量 var global_var = 1; global_novar = 2; // 反面教材 (function () {global_fromfunc = 3 ...

  7. C++ new delete操作符

    //new delete操作符 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;/* 1.ne ...

  8. C++ new和delete操作符

    在C++语言中,new.new[].delete和delete[]操作符通常会被用来动态地分配内存和释放内存.需要注意的是new.new[].delete和delete[]是操作符,而非函数:new和 ...

  9. C++中的new和delete操作符重载

    文章目录 1 new和delete操作符重载 1.1 new和delete操作符重载简介 1.2 静态存储区中创建动态对象 1.3 在指定的地址上创建C++对象 2 new[]和delete[]操作符 ...

最新文章

  1. vue导入excel进度条_Vue 前端开发——导入Excel/Csv
  2. 浅谈ASP.NET Forms验证
  3. Stanford CS230深度学习(三)调参、正则化和优化算法
  4. foreman架构的引入6-整合puppetmaster
  5. python实现Longest Common Subsequence最长公共子序列算法
  6. Qt笔记——MOC(莫克)
  7. ML--HMM(隐马尔可夫模型及python的实现1)
  8. 多项式ln,exp学习小计
  9. python语法错误怎么办_Python中出现语法错误时解决方法
  10. 联想G460驱动问题
  11. 主成分与因子分析异同_主成分分析和因子分析有什么区别?
  12. 微软中国艰难前行:业绩遭遇连续跳票
  13. CSS如何进行图片定位
  14. c语言 判断互质,[经典算法] 找出某数以内与其互质的数
  15. NVIDIA RTX A6000深度学习训练基准
  16. MySQL安装2出现Typical_Mysql安装 - osc_c7lpn2ge的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. 富文本关键字搜索高亮,解决方法及优化(收藏!)
  18. SQL SERVER查询生僻字问题
  19. yii setFlash getFlash 用法 简单说明
  20. VC欣赏、家人是阻力,极客化、国际化——90后创业生态

热门文章

  1. Cocos2d-X开发中国象棋《三》開始场景的实现
  2. PostgreSQL修炼之道:从小工到专家. 3.1 SQL语句语法简介
  3. Vuex之理解Store
  4. Clustered Data ONTAP Fundamentals课程学习(1)
  5. 【转】JVM内存管理:深入垃圾收集器与内存分配策略
  6. 和平之翼代码生成器 SMEU 版 4.0.0 RC 宝船候选版发布
  7. 撤销commit且未push操作的git命令
  8. 第 8 章 TokyoCabinet/Tyrant
  9. mysqlbinlog unknown variable:default-character-set=gbk
  10. (六)数据处理——录入、清洗、加工、描述