javascript的delete运算符知识点总结


Posted in Javascript onNovember 19, 2019

delete是一元操作符,它用来删除对象属性或者数组元素。就像 赋值、递增、递减运算符一样,delete也是具有副作用的,它是用来做删除操作的,不是用来返回一个值的,例如:

var o = { x: 1, y: 2};     // 定义一个对象
delete o.x;           // 删除一个属性 
"x" in o            // => false:这个属性在对象中不再存在 
var a = [1,2,3];        // 定义一个数组 
delete a[2];          // 删除最后一个数组元素 
2 in a;             // => false:元素2在数组中已经不存在了 
a.length            // => 3:注意,数组长度并没有改变,尽管上一行代码删除

需要注意的是,删除属性或者删除数组元素不仅仅是设置了一个 undefined的值。当删除一个属性时,这个属性将不再存在。读取一个不 存在的属性将返回undefined,但是可以通过in运算符(见4.9.3节)来检测这个属性是否在对象中存在。

delete希望他的操作数是一个左值,如果它不是左值,那么delete将 不进行任何操作同时返回true。否则,delete将试图删除这个指定的左 值。如果删除成功,delete将返回true。然而并不是所有的属性都可删 除,一些内置核心和客户端属性是不能删除的,用户通过var语句声明 的变量不能删除。同样,通过function语句定义的函数和函数参数也不能删除。

在ECMAScript 5严格模式中,如果delete的操作数是非法的,比如 变量、函数或函数参数,delete操作将抛出一个语法错误 (SyntaxError)异常,只有操作数是一个属性访问表达式(见4.4节)的 时候它才会正常工作。在严格模式下,delete删除不可配置的属性(参 照6.7节)时会抛出一个类型错误异常。在非严格模式下,这些delete操 作都不会报错,只是简单地返回false,以表明操作数不能执行删除操作。

这里有一些关于delete运算符的例子:

var o = {x:1, y:2};   //定义一个变量,初始化为对象 
delete o.x;       //删除一个对象属性,返回true 
typeof o.x;       //属性不存在,返回"undefined" 
delete o.x;       //删除不存在的属性,返回true 
delete o;        //不能删除通过var声明的变量,返回false
//在严格模式下,将抛出一个异常 delete 1;        //参数不是一个左值,返回true 
this.x = 1;       //给全局对象定义一个属性,这里没有使用
var delete x;        //试图删除它,在非严格模式下返回true            
//在严格模式下会抛出异常,这时使用"delete this.x"来代替    
x;       //运行时错误,没有定义x

以上就是关于javascript中delete运算符的基础知识点,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
js截取函数(indexOf,join等)
Sep 01 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
Apr 01 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
JS对象深度克隆实例分析
Mar 16 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
JS实现返回上一页并刷新页面的方法分析
Jul 16 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
vue实现购物车案例
May 30 Javascript
jQuery实现放大镜案例
Oct 19 jQuery
100行代码实现vue表单校验功能(小白自编)
Nov 19 #Javascript
Angular 多级路由实现登录页面跳转(小白教程)
Nov 19 #Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 #Javascript
vue的三种图片引入方式代码实例
Nov 19 #Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 #Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 #Javascript
VUEX-action可以修改state吗
Nov 19 #Javascript
You might like
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
javascript天然的迭代器
2010/10/29 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
门卫工作岗位职责
2013/12/17 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
安全生产月活动总结
2014/05/04 职场文书
职务任命书范本
2014/06/05 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
开天辟地观后感
2015/06/09 职场文书
听证会主持词
2015/07/03 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers