JavaScript delete关键字

Posted  Island

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript delete关键字相关的知识,希望对你有一定的参考价值。

delete

语法:Boolean delete obj.property
主要用于删除对象的属性,删除成功或失败会返回相应布尔值
可以删除非关键字定义的全局变量(var a = 1不能被删除,a= 1可以)
删除对象中不存在的属性会返回true
删除数组元素不会改变数组的长度(索引不变),被删除的索引值变为empty,遍历打印时表现为undefined,forin遍历时,empty会被忽略

delete删除对象属性

    <script>
        var a = [1,2,3,4];
        a.name = "aaa";
        console.log(delete a["name"]);
        console.log(delete a["z"]);//true
        console.log("a:",a);
    </script>

删除原型属性

    <script>
        var fn = new Function();
        fn.prototype.prop = "a1";
        console.log(delete fn.prototype["prop"]);
        console.log(fn.prototype);
    </script>

delete删除数组元素

和splice不同,delete删除数组元素不会改变数组的长度,且会在索引值上留下一个empty。该epmty可以被for、forof访问,但会被forin、forEach、map等跳过、省略
关于js遍历方式的特性可以参考我的另一篇博客:Funny Loop

    <script>
        var a = [1,2,3,4];
        a.name = "aaa";
        delete a[1];
        console.log("a:",a);
        //会遍历到数组的empty索引值,不会遍历索引之外数组对象的属性
        for(var i = 0; i < a.length; i++){
            console.log(i,a[i]);//undefined
            // a = null; //可以被打断
        }
    </script>

以上是关于JavaScript delete关键字的主要内容,如果未能解决你的问题,请参考以下文章

用下面的代码解释一下javascript中var和let关键字的区别

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

30秒就能看懂的JavaScript 代码片段

为啥这个代码片段说包含错误?