关于JavaScript中的delete操作

JavaScript delete操作详解
本文探讨了JavaScript中delete操作符的使用方法与限制条件,包括如何删除对象属性、全局变量及函数内部变量等,并通过实例说明了不同情况下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是内置的属性、、、
enter description here

还有被标记了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(某变量)找不到了。

转载于:https://www.cnblogs.com/bluey/p/5394986.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值