[英]Why delete operator returns true even if property wasn't deleted from an object
>>> var par = {a: 1, b: 2};
undefined
>>> var ch = Object.create(par);
undefined
>>> delete ch.a
true
>>> ch
Object { a=1, b=2}
您誤解了刪除返回的內容:
如果該屬性是自己的不可配置屬性,則以嚴格模式拋出(在非嚴格條件下返回false)。 在所有其他情況下返回true。 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete )
delete ch.a
嘗試在ch
定位屬性a
,失敗(因為ch
沒有這樣的屬性),什么也不做,很高興地返回true
。 如果您編寫了delete ch.foobar
,結果將是相同的。 但是,如果您嘗試了不可配置的屬性(例如delete ch.__proto__
),則結果將為false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.