ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๊ณต๋ถ€/JS

[JS] delete ์—ฐ์‚ฐ์ž

Carrot๐Ÿฅ• 2020. 7. 6. 07:37

58. ๋ฌด์—‡์ด ์ถœ๋ ฅ ๋ ๊นŒ์š”?

const name = "Lydia";
age = 21;

console.log(delete name);
console.log(delete age);
  • A:false,true
  • B:"Lydia",21
  • C:true,true
  • D:undefined,undefined

 

 


delete ์—ฐ์‚ฐ์ž

 

delete object.property
delete object['property']

 

delete ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
์ œ๊ฑฐํ•œ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋ฅผ ์–ด๋””์—์„œ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‚˜์ค‘์— ์ž์›์„ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. (GC์— ์˜ํ•ด)

 

์‚ญ์ œ๋ฅผ ํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ์•„๋ž˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋งŒ์•ฝ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•˜๋ฉด delete๋Š” ์–ด๋– ํ•œ ์ž‘์—…๋„ ์—†์ด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์— ๊ฐ™์€ ์ด๋ฆ„์˜ ์†์„ฑ์ด ์žˆ๋‹ค๋ฉด, ์‚ญ์ œ ํ›„์—, ์˜ค๋ธŒ์ ํŠธ์˜ ํ”„๋กœํ† ํƒ€์ž…์ฒด์ธ์„ ํ†ตํ•ด ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ฆ‰, delete๋Š” ์˜ค์ง ์ž์‹ ์˜ ํ”„๋กœํผํ‹ฐ๋งŒ ์‚ญ์ œ ํ•ฉ๋‹ˆ๋‹ค.)
  • var๋กœ ์„ ์–ธ๋œ ์–ด๋– ํ•œ ํ”„๋กœํผํ‹ฐ๋ผ๋„ ๊ธ€๋กœ๋ฒŒ ์Šค์ฝ”ํ”„๋‚˜ ํŽ‘์…˜ ์Šค์ฝ”ํ”„๋กœ๋ถ€ํ„ฐ ์‚ญ์ œ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ตญ, delete๋Š” ๊ธ€๋กœ๋ฒŒ ์Šค์ฝ”ํ”„์˜ ์–ด๋–ค ํ•จ์ˆ˜๋„ ์‚ญ์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (ํ•จ์ˆ˜ ์ •์˜์‹์ด๊ฑด ํ•จ์ˆ˜ ํ‘œํ˜„์‹์ด๊ฑด ์‚ญ์ œ ๋ถˆ๊ฐ€)
    • ์˜ค๋ธŒ์ ํŠธ์˜ ์†์„ฑ์œผ๋กœ ์žˆ๋Š” ํ•จ์ˆ˜์ธ ๊ฒฝ์šฐ(๊ธ€๋กœ๋ฒŒ ์Šค์ฝ”ํ”„๋ฅผ ์ œ์™ธํ•˜๊ณ )๋Š” delete๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • let๊ณผ const๋กœ ์„ ์–ธํ•œ ์†์„ฑ์€ ์–ด๋Š ์Šค์ฝ”ํ”„์— ์ •์˜๋˜์–ด ์žˆ๊ฑด ์‚ญ์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Non-configurable ์†์„ฑ์€ ์‚ญ์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Math, Array, Object์™€ ๊ฐ™์€ built-in objects์˜ ์†์„ฑ๋“ค์ด๋‚˜ Object.defineProperty() ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋กœ ๋งŒ๋“  non-configurable์†์„ฑ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

 

 !  non-configurable ์†์„ฑ์€ delete๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†์œผ๋ฉฐ,false๋ฅผ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
(*strict mode์—์„œ๋Š” SyntaxError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด).

 !  var, let, const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” non-configurable ์†์„ฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, delete๋กœ ์‚ญ์ œ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

 

 

 

name ์˜ ๊ฒฝ์šฐ const๋กœ ์„ ์–ธ๋œ ์ „์—ญ๋ณ€์ˆ˜์ด๋ฏ€๋กœ, delete๋กœ ์‚ญ์ œ๋  ์ˆ˜ ์—†์Œ => false ๋ฆฌํ„ด

age ์˜ ๊ฒฝ์šฐ ์ „์—ญ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฏ€๋กœ, delete๋กœ ์‚ญ์ œ๊ฐ€๋Šฅ => true ๋ฆฌํ„ด

 

 

๋ฌธ์ œ์˜ ์ถœ์ฒ˜ : https://github.com/lydiahallie/javascript-questions/blob/master/ko-KR/README-ko_KR.md#58-%EB%AC%B4%EC%97%87%EC%9D%B4-%EC%B6%9C%EB%A0%A5-%EB%90%A0%EA%B9%8C%EC%9A%94

ํ•ด๋‹ต์˜ ์ถœ์ฒ˜ : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/delete

๋Œ“๊ธ€