关于JavaScript中的delete操作
关于JavaScript中的delete操作
看到一道题,是这样的:
(function(x){
delete x;
return x;
})(1);
1
null
undefined
Error
我选了Error、、、、,然而是错的,运行了一下,答案是1.
难道不能delete函数中的参数吗?什么情况是可以delete的?什么情况是不可以delete的?
去网上查了一下
通常:delete 操作符用来删除一个对象的属性。
语法:delete expression
如果成功返回true,失败返回false,但是在严格模式中,如果该属性是一个不可配置的的,delete会抛出异常。
如果 delete 操作符删除成功,则被删除的属性将从所属的对象上彻底消失。
"use strict"
var obj={
name:"aa"
}
Object.defineProperty(obj, "name", {
writable: true,
enumerable: true,
configurable: false
});
delete obj.name;
console.log(obj.name);
obj.name设置为不可配置后delete,在严格模式下会抛出如下异常
Uncaught TypeError: Cannot delete property 'name' of #<Object>
delete 操作符还可以用来删除隐式声明的全局变量,就是没有用var声明的全局变量
实验时遇到一个问题
var name="aa";
delete name;
console.log(name);
和
var name1="aa";
delete name1;
console.log(name1);
运行时不一样的,在第一个例子中,会报错。因为name是内置的属性、、、

还有被标记了DontDelete的一些对象的属性不能被delete.
/* foo是被正常声明的,所以带有DontDelete标记,从而不能被删除! */
var foo = 1;
delete foo; // false
console.log(typeof foo); // "number"
/* bar是作为函数被声明,一样带有DontDelete,不能被删除。 */
function bar(){}
delete bar; // false
console.log(typeof bar);// "function"
/*函数中var的变量,一样带有DontDelete,不能被删除。*/
function f() {
var z = 44;
delete z; // returns false
console.log(z);//44
}
需要注意的是一些内建的对象是自动持有这个标记的,从而不能被删除,比如函数内的arguments,以及函数的 length属性,以及传入的参数。
如果变量被delete了,再对它取值会报错,index.html:11 Uncaught ReferenceError: x is not defined,x(某变量)找不到了。
关于JavaScript中的delete操作的更多相关文章
- JavaScript中使用ActiveXObject操作本地文件夹的方法
转载地址 http://www.jb51.net/article/48538.htm 在Windows平台上, js可以调用很多Windows提供的ActivexObject,本文就使用js来实 ...
- Javascript中的delete
一.问题的提出 我们先来看看下面几段代码,要注意的是,以下代码不要在浏览器的开发者工具(如FireBug.Chrome Developer tool)中运行,原因后面会说明: 为什么我们可以删除对象的 ...
- javascript中字符串常用操作整理
javascript中字符串常用操作整理 字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用 ...
- Javascript中的delete介绍
关于JavaScript中的Delete一直没有弄的很清楚,最近看到两篇这方面的文章,现对两文中部分内容进行翻译(内容有修改和添加,顺序不完全一致,有兴趣推荐看原文),希望能对大家有所帮助 一.问题的 ...
- 深入理解javascript 中的 delete(转)
在这篇文章中作者从<JavaScript面向对象编程指南>一书中关于 delete 的错误讲起,详细讲述了关于 delete 操作的实现, 局限以及在不同浏览器和插件(这里指 firebu ...
- javascript中的数组操作
1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...
- [转] JavaScript中的字符串操作
一.概述 字符串在JavaScript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更 多....JavaScript的核心部分提供 ...
- 深入理解JavaScript中的函数操作——《JavaScript忍者秘籍》总结
匿名函数 对于什么是匿名函数,这里就不做过多介绍了.我们需要知道的是,对于JavaScript而言,匿名函数是一个很重要且具有逻辑性的特性.通常,匿名函数的使用情况是:创建一个供以后使用的函数.简单的 ...
- javascript中字符串常用操作总结、JS字符串操作大全
字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用操作做个整理,一者加深印象,二者方便今后温 ...
随机推荐
- python3 threading初体验
python3中thread模块已被废弃,不能在使用thread模块,为了兼容性,python3将thread命名为_thread.python3中我们可以使用threading进行代替. threa ...
- C语言 · 矩形面积交
问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入格式 输入仅包含两行,每行描述一个矩形. 在每行中 ...
- MVVM TextBox的键盘事件
MVVM下RichTextBox的键盘回车事件设置为发送,不是回车 xmlns:i="http://schemas.microsoft.com/expression/2010/interac ...
- Javascript实现HashTable类
散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...
- 深入Java虚拟机--判断对象存活状态
程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...
- bzoj1901--树状数组套主席树
树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...
- SSH框架和Redis的整合(2)
5. 添加功能的实现 新建一个Action:RClasAction,实现向Redis添加课程数据,并同步到MySQL. package com.school.action; import java.u ...
- Linux实战教学笔记08:Linux 文件的属性(上半部分)
第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...
- 数据库备份并分离日志表(按月)sh 脚本
#!/bin/sh year=`date +%Y` month=`date +%m` day=`date +%d` hour=`date +%H` dir="/data/dbbackup/f ...
- css 填坑常用代码分享
以下是常用的代码收集,没有任何技术含量,只是填坑的积累.转载请注明出处,谢谢. 因为提交比较麻烦,后来转置github:https://github.com/jsfront/src/blob/mast ...