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 相关文章推荐
JavaScript 编程引入命名空间的方法
Jun 29 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
Jquery之Bind方法参数传递与接收的三种方法
Jun 24 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 Javascript
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归并排序的实现
2016/10/18 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
python binascii 进制转换实例
2019/06/12 Python
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
优良学风班总结材料
2014/02/08 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
离婚起诉状范本
2015/05/19 职场文书
表彰大会新闻稿
2015/07/17 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js