2023年4月3日 星期一

重新認識 delete

 重新認識 delete 

前言

  最近發現自己對 delete 有很深的誤解,抽空做個學習,在此做個紀錄。


內容

  原本我認為 delete 跟直接給 undefiend 的結果是一樣的!所以在 注意 in 搭配數字時 delete 和直接給 undefiend 的不同 才會說要注意不同,但實驗了一下搭配 Object 與 hasOwn() 後,發現了差異,範例如下

const example = {};

console.log(Object.hasOwn(example, "prop") );//false

example.prop = "exists";
console.log( Object.hasOwn(example, "prop") );//true

example.prop = null;
console.log( Object.hasOwn(example, "prop") );//true

example.prop = undefined;
console.log( Object.hasOwn(example, "prop") );//true

delete example.prop;
console.log( Object.hasOwn(example, "prop") );//false


範例凱使先確認 prop 是否存在,回傳 false ,如預期,接著新增 prop 後,再次確認也如預期得到 true ,接著實驗給予 null ,結果是 true ,再來的 undefiend 也是一樣的結果,只有在執行 delete 後才能確實刪除成員的存在。


參考資料

[ developer.mozilla.org ] delete operator


相關文章與資料

注意 in 搭配數字時 delete 和直接給 undefiend 的不同

沒有留言:

張貼留言