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
- URLSearchParams delete()delete
- FormData delete()ORMdelete
- Map delete() 方法delete
- WeakMap delete() 方法delete
- WeakSet delete() 方法delete
- SQL__DELETESQLdelete
- Set delete() 方法delete
- URLSearchParams delete() 方法delete
- git delete and revertGitdelete
- MySQL Delete PHPMySqldeletePHP
- OUTLOOK - Unable to Delete Meetingsdelete
- 740. Delete and Earndelete
- 450-Delete Node in a BSTdelete
- 記憶體(new delete )記憶體delete
- Sanic delete()方法/函式delete函式
- 如何提高MySQL DELETE 速度MySqldelete
- jemalloc delete 出現 segmentfaultdelete
- python--之np.deletePythondelete
- 【SQL】11 SQL DELETE 語句SQLdelete
- [20190825]Join View and delete.txtViewdelete
- How To Delete Unwanted Boot Menu Itemsdeleteboot
- sql:delete if exists還是drop if exists?SQLdelete
- 這樣delete居然不走索引delete索引
- 380. Insert Delete GetRandom O (1)deleterandom
- [20200906][轉載]FK on delete.txtdelete
- C malloc() free(), C++ new() delete()C++delete
- JS物件操作(in、instanceof、delete)運算子JS物件delete
- Leetcode 237. Delete Node in a Linked ListLeetCodedelete
- Elasticsearch Java High Level REST Client(Delete API)ElasticsearchJavaRESTclientdeleteAPI
- Centos/RHEL :How to add,delete and display LVM tagsCentOSdeleteLVM
- CF1913B Swap and Delete 題解delete
- 資料庫Delete的多種用法資料庫delete
- 如何提升SQLServer Delete資料的效率SQLServerdelete
- WorkBench,DELETE 標準語句失敗delete
- SQLite語句(二):INSERT DELETE UPDATE SELECTSQLitedelete
- [20180409]delete刪除緩慢分析.txtdelete
- [LeetCode] 380. Insert Delete GetRandom O(1)LeetCodedeleterandom