๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ“บ Front End/-- JS & ES6+13

[Javascript-Core] ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ์˜ this ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์  (๋ถ€์ œ) :: JS์—์„œ ๋งํ•˜๋Š” This์— ์ •ํ™•ํ•œ ์˜๋ฏธ์™€ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ์˜ this(2) ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ this์ด๋‹ค. ๋‚˜๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ธ java๋ฅผ ๋จผ์ € ๋ฐฐ์› ๊ธฐ ๋•Œ๋ฌธ์— js์—์„œ ๋งํ•˜๋Š” this๋ฅผ ๋‹จ์ง€ class ๋‚ด๋ถ€์˜ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์—ญํ• ๋กœ์จ ์ดํ•ด๋ฅผ ํ–ˆ์—ˆ์ง€๋งŒ, js์—์„œ ๋งํ•˜๋Š” this๋Š” ํ›จ์”ฌ ๋‹ค์–‘ํ•˜๊ณ  ์‹ฌ์˜คํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์˜ค๋Š˜ ๊ทธ ์‹ฌ์˜คํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด์„œ ์งš์–ด๋ณด์ž. ํ•ด๋‹น ๊ธ€์€ 4๋ถ€์ž‘์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. this์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์™„๋ฒฝํžˆ ํŒŒ์•…ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ํ•œ ๋ฒˆ ๋ด๋ณด๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ๊ณต๊ฐ„์—์„œ์˜ this ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ์˜ this ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ์˜ this ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ์˜ this What is this ์ตœ๋Œ€์˜ docs๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” w3c์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด this์˜ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฅ˜ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์—์„œ this๋Š” ๊ทธ์˜ ์ฃผ์ธ ๊ฐ์ฒด(Owner Obj)๋ฅผ ๋œปํ•œ๋‹ค. this๊ฐ€ ๋‹จ๋…์œผ.. 2020. 7. 28.
[Javascript-Core] ์ „์—ญ ๊ณต๊ฐ„์—์„œ์˜ this (๋ถ€์ œ) ::JS์—์„œ ๋งํ•˜๋Š” This์— ์ •ํ™•ํ•œ ์˜๋ฏธ์™€ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ์˜ this(1) ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ this์ด๋‹ค. ๋‚˜๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ธ java๋ฅผ ๋จผ์ € ๋ฐฐ์› ๊ธฐ ๋•Œ๋ฌธ์— js์—์„œ ๋งํ•˜๋Š” this๋ฅผ ๋‹จ์ง€ class ๋‚ด๋ถ€์˜ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์—ญํ• ๋กœ์จ ์ดํ•ด๋ฅผ ํ–ˆ์—ˆ์ง€๋งŒ, js์—์„œ ๋งํ•˜๋Š” this๋Š” ํ›จ์”ฌ ๋‹ค์–‘ํ•˜๊ณ  ์‹ฌ์˜คํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์˜ค๋Š˜ ๊ทธ ์‹ฌ์˜คํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด์„œ ์งš์–ด๋ณด์ž. ํ•ด๋‹น ๊ธ€์€ 4๋ถ€์ž‘์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. this์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์™„๋ฒฝํžˆ ํŒŒ์•…ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ํ•œ ๋ฒˆ ๋ด๋ณด๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ๊ณต๊ฐ„์—์„œ์˜ this ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ์˜ this ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ์˜ this ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ์˜ this What is this ์ตœ๋Œ€์˜ docs๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” w3c์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด this์˜ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฅ˜ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์—์„œ this๋Š” ๊ทธ์˜ ์ฃผ์ธ ๊ฐ์ฒด(Owner Obj)๋ฅผ ๋œปํ•œ๋‹ค. this๊ฐ€ ๋‹จ๋…์œผ.. 2020. 7. 28.
[Javascript-Core] Execution Context์™€ Hoisting์˜ ์ƒ๊ด€ ๊ด€๊ณ„์™€ ์˜คํ•ด, ๊ทธ๋ฆฌ๊ณ  ์ดํ•ด ๋ถ€์ œ :: EnvironmentRecord๊ฐ€ Hoisting์„ ํ•˜๋Š” ๋ฐฉ๋ฒ• ํ˜ธ์ด์ŠคํŒ…(Hoisting) ํ˜ธ์ด์ŠคํŒ…์€ ์ง€๋‚œ ์‹œ๊ฐ„์— ์ด์•ผ๊ธฐ ํ–ˆ๋˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ Creation Phase์—์„œ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐฉ์‹์ธ๋ฐ, MDN์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฝ๊ณ ํ•˜๊ณ  ์žˆ๋‹ค. ๋ณดํ†ต ์‚ฌ๋žŒ๋“ค์ด ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜๋ฉด ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ฝ”๋“œ ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง„๋‹ค๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ž˜๋ชป๋œ ์ •๋ณด์ด๋‹ค. ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ฝ”๋“œ๋Š” ์‹ค์ œ ์œ„์น˜ ๊ทธ๋Œ€๋กœ ์กด์žฌํ•˜๊ณ  ๊ฐœ๋…์ ์œผ๋กœ ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง„๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š”๊ฒŒ ์ •ํ™•ํ•˜๋‹ค. Hoisting์„ ์ดํ•ดํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. MDN์—์„œ๋Š” ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ํ˜ธ์ด์ŠคํŒ…์ด๋ผ๊ณ  ์˜ˆ์‹œ๋ฅผ ์ œ์‹œํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๊ฐ๊ฐ์˜ x๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ถœ๋ ฅ๋ ์ง€ ์Šค์Šค๋กœ์—๊ฒŒ ๋Œ€๋‹ตํ•ด๋ณด์ž. ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์—‡์ผ์ง€ ์ฒดํฌํ•ด๋ณด์ž. 1 undefined 2 1 1 2 EnvironmentRecord์— ์˜ํ•œ Hoi.. 2020. 7. 28.
[Javascript-Core] Execution Context, ์‹คํ–‰ ๋ฌธ๋งฅ์— ๊ด€ํ•˜์—ฌ ์•Œ์•„๋ณด์ž. Execution Context ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์‹คํ–‰ํ•  ์ฝ”๋“œ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ๋ชจ์€ ๊ฐ์ฒด๋ฅผ ๋œปํ•œ๋‹ค. ์ด๋Š”, OS๋ฅผ ํ•™์Šตํ•˜๋‹ค๊ฐ€ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ์‹คํ–‰ ๋ฌธ๋งฅ, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ, ์ต์Šคํ์…˜ ์ปจํ…์ŠคํŠธ์™€ ๋‹ค๋“ค ๋™์ผํ•œ ๊ฐœ๋…์ด๋‹ค. ์กฐ๊ธˆ ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐ ํ•œ๋‹ค๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์šฐ๋ฆฌ๊ฐ€ var a = 10; function hello() { var b = "hello"; return b; } ์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ์‹คํ–‰์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋Š” var a = 10๊ณผ hello()ํ•จ์ˆ˜์™€ var b = 'hello'๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์‹๋ณ„์ž์™€ ๋ณ€์ˆ˜๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ฝœ ์Šคํƒ์— ์˜ํ•ด ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋Š”๋ฐ, ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ Interpreting ํ•˜๋ฉด์„œ ์ฝœ.. 2020. 7. 27.
[Javascript-Core] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ null๊ณผ undefined ๋‚ด ์ฃผ ์–ธ์–ด๋Š” ์ž๋ฐ”์ด๋‹ค. ์ž๋ฐ”์—์„œ ๋ณดํ†ต ๊ฐ’์ด ์—†์Œ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋Œ€ํ‘œ์ ์œผ๋กœ null์ด ์žˆ๋‹ค. Spring ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๊ฐ€ ์ž์ฃผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” nullPointException. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์—†์Œ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 2 ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. null undefined ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ์ด ๋‘ ๊ฐ€์ง€ ์—†์Œ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. null null์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ๊ฐ’์ด ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. null์€ ๋ณ€์ˆ˜ ํ• ๋‹น ๊ณผ์ •์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ null์„ ๋งŒ๋‚˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž„์˜์ ์œผ๋กœ null์ด๋ผ๋Š” ๊ฒƒ์„ ํ• ๋‹นํ•ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ null์„ ๊ณ ์˜์ ์ธ ๋น„ํ• ๋‹น์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. undefined undefined๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์•„์ง ํ• ๋‹น๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Ÿฐ ์ƒ.. 2019. 11. 29.
[Javascript-Core] ๋ณ€์ˆ˜์˜ ์„ ์–ธ var๊ณผ let ๊ทธ๋ฆฌ๊ณ const์˜ ์ฐจ์ด :: Difference among var and let and const ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฑ…์„ ๋ดค์„ ๋•Œ, ๋Œ€๋ถ€๋ถ„์˜ ์ฑ…์—์„œ var์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ผ๊ณ  ๊ฐ€๋ฅด์นœ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์˜ˆ์ „์— ์†Œ๋งˆ๋ฅผ ์ค€๋น„ํ•  ๋•Œ ์†Œ๋งˆ ์‹œํ—˜์„ ์œ„ํ•ด ์ž ๊น ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๋ถ€ํ–ˆ๋˜ ์ ์ด ์žˆ๋Š”๋ฐ, ๊ทธ ๋•Œ var๋Œ€์‹  let์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ผ๊ณ  ํ–ˆ๋˜ ๊ธ€์„ ๋ณธ ์ ์ด ์žˆ์—ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ๋‘ ์ฐจ์ด์ ์„ ํ™•์‹คํžˆ ๋น„๊ตํ•ด๋ณด๊ณ  ๋„˜์–ด๊ฐ€๋ณด์ž. ๊ฒฐ๋ก  var let const ์žฌ์„ ์–ธ O X X ์žฌํ• ๋‹น O O X ์ƒ์กด ๋ฒ”์œ„ Funtion Scope(ํ•จ์ˆ˜) Block Scope(์ค‘๊ด„ํ˜ธ) Block Scope(์ค‘๊ด„ํ˜ธ) ๋ณ€์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๊ฐ™์ด ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜๋Š” variable์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๊ทธ๋ฆ‡์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด์„œ ํŠน์ •.. 2019. 11. 29.