美文网首页
js中delete,in关键字

js中delete,in关键字

作者: 人间客_ | 来源:发表于2017-03-01 10:25 被阅读0次

    2017.2.20

    Delete关键字

    语法:

    delete expression

    expression应该是一个对象的属性引用,例如:

    delete object.property

    delete object['property']

    如果expression的计算结果不是一个对象的属性引用,那么,delete不会起任何作用。

    参数

    objectName 对象名.

    property        需要删除的属性.

    严格模式中,如果属性是一个不可配置(non-configurable)属性,删除时会抛出异常,非严格模式下返回false。其他情况都返回true。

    delete 操作符与直接释放内存(只能通过解除引用来间接释放)没有关系。可查看内存管理页面。developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management

    你可以使用delete操作符来删除一个隐式声明的全局变量,也就是没有使用var定义的全局变量.全局变量其实是global对象(window)的属性.

    如果delete操作符删除成功,则被删除的属性将从所属的对象上彻底消失。然后,如果该对象的原型链上有一个同名属性,则该对象会从原型链上继承该同名属性。


    一些对象的属性不能被delete   显示全局变量不能直接被删除,如果是删除相应属性可以,隐式全局变量能被全部删除(不管是字符串,数字,还是对象···)

    你不能删除一个对象从原型继承而来的属性(不过你可以从原型上直接删掉它).

    删除数组元素

    当你删除一个数组元素时,数组的 length 属性并不会变小。例如,如果你删除了a[3], a[4]仍然是a[4], a[3]成为undefined. 即便你删除了最后一个元素也是如此 (delete a[a.length-1]).

    数组内删除变成了undefined的数  该位子还是存在着的,但是该位置上的值是没有了 所以 x in arr 是false

    如果你想让一个数组元素的值变为undefined而不是删除它,可以使用undefined给其赋值而不是使用delete操作符。下面的例子中,trees[3] 被赋值为undefined,但该元素仍然存在。

    引用:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete

    In关键字

    1.For...In 声明用于对数组或者对象的属性进行循环/迭代操作。

    for(var i in object) {

         xxxxx

    }

    2.判断对象是否为数组/对象的元素/属性:

    var arr = ["a","b","2","3","str"];  

    var result = ("b" in arr);               //false          数组是索引index     对象是键值key

    var result1 = (4 in arr);               //true

    var obj = {

            w:'wen'

            j:'jiao'

    }

    var result = (1 in obj);              //false          数组是索引index    对象是键值key

    var result1 = ("j" in obj);          //true

    相关文章

      网友评论

          本文标题:js中delete,in关键字

          本文链接:https://www.haomeiwen.com/subject/nttewttx.html