delete expresson
1
2
express 應該是一個對象的引用,例如
delete object.propertydelete object['property']
1
2
3
4
如果expression不是一個對象的引用,那么delete則不會起任何作用
在嚴格模式下,如果屬性是一個不可配置的屬性,刪除是會拋出異常,非嚴格模式下返回false,其他情況返回true.
可以刪除隱式全局變量,但不可已刪除顯示全局變量。
全局變量其實是global對象(window)的屬性。
x = 10;var y = 20;delete x; //true;delete y; //false
1
2
3
4
5
6
內置對象的內置屬性不能被刪除,用戶自定義的屬性可以被刪除。
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
不能刪除一個對象從原型繼承而來的屬性,但是可以直接從原型上刪掉它;
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數組刪除特定元素方法介紹
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com