簡介
用來刪除一個物件的屬性。
delete expresson
1
2
express 應該是一個物件的參考,例如
delete object.propertydelete object['property']
#1
#如果expression不是物件的引用,那麼delete就不會起任何作用傳回值
在嚴格模式下,如果屬性是不可配置的屬性,刪除是會拋出異常,非嚴格模式下回傳false,其他情況回傳true .作用
- 可以刪除隱式全域變量,但不可刪除顯示全域變數。
全域變數其實是global物件(window)的屬性。
x = 10;var y = 20;delete x; //true;delete y; //false登入後複製
- 內建物件的內建屬性不能被刪除,使用者自訂的屬性可以被刪除。
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 相当于是一个匿名变量,所以也不能被删除。
##3
4
5
6
- 不能刪除一個物件從原型繼承而來的屬性,但是可以直接從原型上刪除它;
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
當刪除陣列元素時,陣列的長度不會變小。
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 ]
##3
4
5
#6
#作用:在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});登入後複製
1arr.forEach(function(val,index){ if(val < 10){ arr.splice(index,1); } })//没有答案我们预想的结果,因为splice删除元素会改变数组的长度。//所以说删除一个值后,其后的那个值占据了它的位置,在判断的时候就会漏掉。console.log(arr);// [ 3, 21, 4, 53, 21, 2 ]登入後複製
##3
4
5
6
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css"> </p>
以上是js刪除操作delete步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!