JavaScript delete
從運算子名稱可以猜想到,它可以刪除一些東西。
下面通過程式碼例項介紹一下此運算子能刪除何種東西,有什麼限制。
一.基本介紹:
此運算子通常用於刪除物件的屬性,也可以在滿足一定條件下刪除變數。
下面分別通過程式碼例項做一下介紹。
(1).運算子可以刪除物件的屬性:
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let obj={ webName:"螞蟻部落", url:"http://www.softwhy.com", address:"青島市南區" } delete obj.address; console.log(obj.address);
程式碼執行效果截圖如下:
可以看到address屬性已經被刪除。
(2).刪除宣告的變數:
並不是所有宣告的變數都可以刪除。
首先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var webName="螞蟻部落"; address="青島市南區"; delete webName; delete address; console.log(webName); console.log(address);
程式碼執行效果截圖如下:
有上述程式碼執行效果截圖如下,可以得出如下結論:
(1).使用var宣告的變數不能被刪除。
(2).沒有使用var宣告的變數可以被刪除。
再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼eval("var webName='螞蟻部落';"); delete antzone; console.log(antzone);
程式碼執行效果截圖如下:
可以看到,使用eval()解析一段JavaScript程式碼,儘管使用了var,但是依然可以刪除。
在eval上下問環境中,不使用var宣告也可以被刪除,這裡就再演示。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let arr=["螞蟻部落",4,"青島市南區"]; delete arr.length; console.log(arr.length);
程式碼執行效果截圖如下:
length是內建屬性,無法被刪除,通常內建屬性是無法被刪除的。
二.能否被刪除的原理:
在很多文章經常會說,之所以一個物件屬性不能夠被刪除,是因為此屬性具有DontDelete特性。
現在糾正一下,DontDelete特性是ES3的概念,現在已經被ES5中的Configurable特性值為false所替代。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let antzone = { webName:"螞蟻部落", url: "http://www.softwhy.com", age:4 }; Object.defineProperty(antzone,"webName",{ configurable:false }); delete antzone.webName; console.log(antzone.webName);
程式碼執行效果截圖如下:
可以看到,將webName屬性的configurable特性值設定為false。
這樣delete運算子就無法刪除此類屬性。
關於configurable可以參閱configurable、enumerable和writable介紹一章節。
相關文章
- JavaScript delete用法JavaScriptdelete
- Javascript中的deleteJavaScriptdelete
- Javascript中的in,hasOwnProperty,delete,for/inJavaScriptdelete
- 詳解 javascript 的 delete 運算JavaScriptdelete
- javascript delete運算子刪除array陣列元素JavaScriptdelete陣列
- delete input 與 delete all inputdelete
- delete OBSOLETE 與 delete expirieddelete
- deletedelete
- javascript delete刪除屬性的注意點簡單介紹JavaScriptdelete
- delete 和 delete [] 的真正區別delete
- delete與delete[]需要注意的地方delete
- FormData delete()ORMdelete
- URLSearchParams delete()delete
- DELETE STATISTICSdelete
- rman 中delete 與delete force 的區別delete
- MySQL Delete PHPMySqldeletePHP
- WeakMap delete() 方法delete
- WeakSet delete() 方法delete
- Map delete() 方法delete
- SQL__DELETESQLdelete
- Set delete() 方法delete
- URLSearchParams delete() 方法delete
- Delete the temp tabledelete
- git delete and revertGitdelete
- RMAN 中delete exipired 和 delete obsolete 的區別delete
- backup archivelog delete input 與delete all input 區別Hivedelete
- rman 中的 delete all input 和 delete input 的區別delete
- Handler_delete和Com_delete有什麼關係delete
- 740. Delete and Earndelete
- postgresql delete duplicated rowsSQLdelete
- Diffrence Between delete and truncatedelete
- truncate 比 delete 慢delete
- drop、delete 與truncatedelete
- Delete Dataguard ArchivelogdeleteHive
- STL iterator delete problemdelete
- BW: How To Delete Workbookdelete
- SQL – TRUNCATE vs DELETESQLdelete
- 主外來鍵關聯刪除(on delete set null和on delete cascade)deleteNull