视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js删除操作delete步骤详解
2020-11-27 19:32:36 责编:小采
文档


语法

delete expresson
  • 1

  • 2

  • express 应该是一个对象的引用,例如

    delete object.propertydelete object['property']
  • 1

  • 2

  • 3

  • 4

  • 如果expression不是一个对象的引用,那么delete则不会起任何作用

    返回值

    在严格模式下,如果属性是一个不可配置的属性,删除是会抛出异常,非严格模式下返回false,其他情况返回true.

    作用

    1. 可以删除隐式全局变量,但不可已删除显示全局变量。
      全局变量其实是global对象(window)的属性。

    x = 10;var y = 20;delete x; //true;delete y; //false
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

    1. 内置对象的内置属性不能被删除,用户自定义的属性可以被删除。

    obj = {
    
     h : 10}var obj1 = {
     h: 10}delete Math.PI; // falsedelte obj.h; //truedelete obj; //ture ,obj 是全局变量的属性,而不是变量。delete obj1.h;//truedelete obj1; //false 全局显示变量不能被删除function fn(){
    
     var z = 10; delete z; //false
     //z是局部变量,不能被删除,delete只能删除对象的属性。}delete fn; //false//fn 相当于是一个匿名变量,所以也不能被删除。
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

    1. 不能删除一个对象从原型继承而来的属性,但是可以直接从原型上删掉它;

    function foo(){}
    foo.prototype.name = 'zhangsan';var f = new foo();//delete只能删除自己的属性,不能删除继承来的属性delete f.name; // false console.log(f.name);//zhangsandelete foo.prototype.anme; // trueconsole.log(f.name); // undefined
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 删除数组元素

    当删除数组元素时,数组的长度并不会变小。

    var arr = [1,3,4,6,73,2];delete arr[2];
    
    console.log(arr.length); // 6console.log(arr[2]); //undefiendconsoel.log(arr); //[ 1, 3, , 6, 73, 2 ]
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 作用:在forEach 循环中删除元素,不会影响循环结果

    var arr = [1,3,5,21,3,4,53,21,5,2];
    
    arr.forEach(function(val,index){
    
     if(val < 10){ delete arr[index];
     }
    })
    
    console.log(arr); //[ , , , 21, , , 53, 21, , ]//可以使用filter过滤掉空值 [ 21, 53, 21 ]arr = arr.filter(function(val){return val});
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 与 Array.splice 对比

    arr.forEach(function(val,index){
    
     if(val < 10){
    
     arr.splice(index,1);
     }
    })//没有答案我们预想的结果,因为splice删除元素会改变数组的长度。//所以说删除一个值后,其后的那个值占据了它的位置,在判断的时候就会漏掉。console.log(arr);// [ 3, 21, 4, 53, 21, 2 ]
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  •  <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
     </p>

    相关推荐:

    利用Js实现删除数组中某一项或几项的几种方法

    JavaScript数组删除特定元素方法介绍

    下载本文
    显示全文
    专题