๐Ÿ™ JS ๊ฐ„๋‹จ ๋ช…๋ฃŒํ•œ ๊ธฐ๋ณธ ์ •๋ฆฌ2

KHWยท2021๋…„ 11์›” 14์ผ
0

Javascript ์ง€์‹์Œ“๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
87/95

8. ๋ฌธ

ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„ / ์ตœ์†Œ ์‹คํ–‰ ๋‹จ์œ„
1. ํ‘œํ˜„์‹์ธ ๋ฌธ => ๋ณ€์ˆ˜ ํ• ๋‹น ๊ฐ€๋Šฅ
2. ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ => ๋ณ€์ˆ˜ ํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ (ex ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ , ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ)

9. ํ•จ์ˆ˜

  1. ํ•จ์ˆ˜์„ ์–ธ์‹ : ์„ ์–ธ์ด๋ฏ€๋กœ ํ˜ธ์ด์ŠคํŒ… ๋ฐœ์ƒ
    (ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…) , ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์‹๋ณ„์ž ์‚ฌ์šฉ
  2. ํ•จ์ˆ˜ํ‘œํ˜„์‹ : ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์œผ๋ฏ€๋กœ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ํ˜ธ์ด์ŠคํŒ… ๋ฐœ์ƒ
    (๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…) , ์•”๋ฌต์ ์ด์ง€ ์•Š์€ ์‹๋ณ„์ž ์‚ฌ์šฉ
  3. Function ์ƒ์„ฑ์žํ•จ์ˆ˜
  4. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์˜ ํŠน์ง•

์ผ๊ธ‰๊ฐ์ฒด: ํ•จ์ˆ˜๋ฅผ ๊ฐ’์ฒ˜๋Ÿผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ฃผ์˜ํ•  ์ 

์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ๋กœ ์ธํ•œ ์™ธ๋ถ€ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด๋ผ
=> ๊ฐ์ฒด๋ฅผ ๋ถˆ๋ณ€๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด๋ผ
=> ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

๊ณ ์ฐจํ•จ์ˆ˜๋ž€?

ํ•จ์ˆ˜์˜ ์™ธ๋ถ€์—์„œ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ๋ฐ›์€ ํ•จ์ˆ˜
map filter forEach

์ˆœ์ˆ˜ํ•จ์ˆ˜ / ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜

์ˆœ์ˆ˜ํ•จ์ˆ˜ : ์–ด๋–ค ์™ธ๋ถ€ ์ƒํƒœ์— ์˜์กดํ•˜์ง€๋„ ์•Š๊ณ  ๋ณ€๊ฒฝํ•˜์ง€๋„ ์•Š๋Š” ๋ถ€์ˆ˜ํšจ๊ณผ X
๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜ : ์™ธ๋ถ€ ์ƒํƒ€์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ถ€์ˆ˜ํšจ๊ณผ O

์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ์›์‹œํ˜•์— ๋Œ€ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
๋ฐ˜๋ฉด ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ์›์‹œํ˜•์— ๋Œ€ํ•ด ์ง์ ‘ ๊ฐ’์„ ๋ฐ›์•„ ๋ณ€๊ฒฝํ•˜์—ฌ ์™ธ๋ถ€ ์ƒํƒœ(๊ฐ’)๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ์ฐธ์กฐํ˜•์— ๋Œ€ํ•ด ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ์ง€์•Š๋Š”๋‹ค.
๋ฐ˜๋ฉด ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ๊นŠ์€๋ณต์‚ฌ์—†์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์™ธ๋ถ€ ์ƒํƒœ(๊ฐ’)๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

10. ์Šค์ฝ”ํ”„

var : ํ•จ์ˆ˜๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ (ํ•จ์ˆ˜๋ชธ์ฒด์•ˆ์—์„œ๋งŒ ์Šค์ฝ”ํ”„ ์ž‘๋™)
let / const : ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ (๋ชจ๋“  ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ ์Šค์ฝ”ํ”„ ์ž‘๋™)

์ •์  ์Šค์ฝ”ํ”„ ๋™์ž‘

๋ณ€์ˆ˜ ๊ฐ’์„ ์ฐพ์„๋•Œ๋Š” ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ํ˜ธ์ถœํ–ˆ๋Š”์ง€(๋™์ ์Šค์ฝ”ํ”„)์— ์˜ํ–ฅ์„ ๋ฐ›์ง€์•Š๊ณ  ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์ •์˜ํ–ˆ๋Š”์ง€(์ •์ ์Šค์ฝ”ํ”„)์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

var x = 1;
function foo(){
  var x = 10;
  bar();
}
function bar(){
  console.log(x);
}
foo()	//1
bar()	//1
  • fooํ•จ์ˆ˜์•ˆ์— ์žˆ๋Š” barํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์ •์˜ํ–ˆ๋Š”์ง€๋ณด๋ฉด ์ „์—ญ ์ปจํ…์ŠคํŠธ์—์„œ ์ •์˜ํ•œ var x = 1์—์„œ ์ •์˜ ํ–ˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ถ€๋ถ„์—์„œ์˜ ์ฝ˜์†” ์ถœ๋ ฅ์ธ 1์ด ์ถœ๋ ฅ๋œ๋‹ค.

11. ์Šค์ฝ”ํ”„์˜ ์ฐจ์ด์ 

var : ๋ณ€์ˆ˜์„ ์–ธ
1) ์„ ์–ธ๋‹จ๊ณ„ : ๋Ÿฐํƒ€์ž„ ์ด์ „
2) ์ดˆ๊ธฐํ™”๋‹จ๊ณ„ : ๋Ÿฐํƒ€์ž„ ์ด์ „

let / const : ๋ณ€์ˆ˜์„ ์–ธ
1) ์„ ์–ธ๋‹จ๊ณ„ : ๋Ÿฐํƒ€์ž„ ์ด์ „
2) ์ดˆ๊ธฐํ™”๋‹จ๊ณ„ : ๋ณ€์ˆ˜์„ ์–ธ๋ฌธ์— ๋„๋‹ฌํ–ˆ์„๋•Œ ์‹คํ–‰

  • ์„ ์–ธ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์ด์ „์— ์ ‘๊ทผํ• ๊ฒฝ์šฐ TDZ์— ์˜ํ•ด ์˜ค๋ฅ˜ ๋ฐœ์ƒ

12. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ

์†Œ์Šค์ฝ”๋“œ(์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ)์˜ ์ข…๋ฅ˜

  1. ์ „์—ญ ์ฝ”๋“œ
  2. ํ•จ์ˆ˜ ์ฝ”๋“œ
  3. eval ์ฝ”๋“œ
  4. ๋ชจ๋“ˆ ์ฝ”๋“œ

์†Œ์Šค์ฝ”๋“œ์˜ ๊ณผ์ •

  1. ์†Œ์Šค์ฝ”๋“œ ํ‰๊ฐ€๊ณผ์ • (๋Ÿฐํƒ€์ž„ ์ด์ „)
  2. ์†Œ์Šค์ฝ”๋“œ ์‹คํ–‰๊ณผ์ • (๋Ÿฐํƒ€์ž„)
  • ์†Œ์Šค์ฝ”๋“œ์˜ ์ข…๋ฅ˜์—์„œ ๊ฐ๊ฐ ํ•ด๋‹น ๊ณผ์ •์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ „์—ญ์ฝ”๋“œ ํ‰๊ฐ€ / ์‹คํ–‰

์ „์—ญ์ฝ”๋“œ ํ‰๊ฐ€ : ์„ ์–ธ๋ฌธ๋งŒ ๋จผ์ € ์‹คํ–‰

์˜ˆ์‹œ๋กœ ์•Œ์•„๋ณด๊ธฐ ( let์˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ๋„ ๊ด€๋ จ)

ํ•ด๋‹น ๋‚ด์šฉ์€ ๊ธ€์“ด์ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด๋ผ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

console.log(x)
let x;

์ „์—ญ์ฝ”๋“œ ํ‰๊ฐ€๊ณผ์ •

  1. ํ˜ธ์ด์ŠคํŒ… ๋ฐœ์ƒ
  2. let์ด ํ˜ธ์ด์ŠคํŒ… ๋œ ์„ ์–ธ๋ฌธ๋งŒ ์‹คํ–‰๋œ๋‹ค.
  3. ๋ณ€์ˆ˜์„ ์–ธ์˜ ์„ ์–ธ ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋œ๋‹ค. (์ดˆ๊ธฐํ™” X)
let x; // ํ˜ธ์ด์ŠคํŒ… ๋œ ๋ถ€๋ถ„ ์„ ์–ธ๋ฌธ (์„ ์–ธ ๋‹จ๊ณ„)
console.log(x) 			//x์˜ TDZ
let x; // ์‹ค์ œ ์ดˆ๊ธฐํ™” ์ง„ํ–‰๋˜๋Š” ๋ถ€๋ถ„ (์ดˆ๊ธฐํ™” ๋‹จ๊ณ„) 

์ „์—ญ์ฝ”๋“œ ์‹คํ–‰๊ณผ์ •

  1. ์„ ์–ธ ์ดํ›„์˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋™์ž‘์‹œํ‚จ๋‹ค.
  2. console.log(x)๋ฅผ ํ•˜๋ ค๋Š”๋ฐ x๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜์ง€์•Š์•„ referenceError ๋ฐœ์ƒ
console.log(x) //ReferenceError x๊ฐ€ ์„ ์–ธ๋‹จ๊ณ„๋งŒ ์ง„ํ–‰๋˜๊ณ  ์ดˆ๊ธฐํ™”๊ฐ€ ์ง„ํ–‰x
let x		//x๊ฐ€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์ง„ํ–‰

์ฐฉ๊ฐํ•˜์ง€๋ง์•„์•ผํ•  ๋‚ด์šฉ

์ „์—ญ์ฝ”๋“œ ํ‰๊ฐ€๊ณผ์ •(์†Œ์Šค์ฝ”๋“œ ํ‰๊ฐ€๊ณผ์ •)์—์„œ ์„ ์–ธ๋ฌธ๋งŒ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด๋•Œ ์„ ์–ธ๋ฌธ์€ ํ˜ธ์ด์ŠคํŒ… ๋œ ์„ ์–ธ๋ฌธ์ด๊ณ  ์„ ์–ธ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ
์‹ค์ œ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ์„ ์–ธ๋ฌธ ๋ถ€๋ถ„์ด ์‹คํ–‰๋˜๋Š” ์ „์—ญ์ฝ”๋“œ ์‹คํ–‰๊ณผ์ • ๋ถ€๋ถ„์—์„œ ์ด๋•Œ๊ฐ€ ์ดˆ๊ธฐํ™”๋‹จ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค!!!
๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ์ „์— ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ’์„ ์ฐธ๊ณ ํ•˜๋ ค ํ•  ๊ฒฝ์šฐ ์ดˆ๊ธฐํ™”๊ฐ€ ์•ˆ๋˜์–ด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

13. this

์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด
์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๊ธฐ ์ฐธ์กฐ ๋ณ€์ˆ˜

this ๊ฒฐ์ •๊ณผ ๋ณ€์ˆ˜ ๊ฐ’ ๊ฒฐ์ •

  • ๋ณ€์ˆ˜

    ํ•จ์ˆ˜์˜ ์ƒ์œ„์Šค์ฝ”ํ”„ ์œ„์น˜ ๊ฒฐ์ •ํ•˜๊ธฐ : ์ •์˜๋˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ
    (์ •์  ์Šค์ฝ”ํ”„)

  • this

    this์˜ ๋Œ€์ƒ ๊ฒฐ์ •ํ•˜๊ธฐ : ํ˜ธ์ถœ๋˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ
    (๋™์ ์œผ๋กœ ๊ฒฐ์ •)

this์˜ ํ˜ธ์ถœ๋ฐฉ์‹ ์ข…๋ฅ˜ 4๊ฐ€์ง€

  1. ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ
  2. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
  3. ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ํ˜ธ์ถœ
  4. Function.prototype.apply/call/bind ๋ฉ”์„œ๋“œ์— ์˜ํ•œ ๊ฐ„์ ‘ ํ˜ธ์ถœ
  • ์ผ๋ฐ˜ํ•จ์ˆ˜ : ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ this์—๋Š” ์ฉ์—ญ ๊ฐ์ฒด๊ฐ€ ๋ฐ”์ธ๋”ฉ
    (์ฝœ๋ฐฑํ•จ์ˆ˜ ๋ฐ ์ค‘์ฒฉํ•จ์ˆ˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

  • ๋ฉ”์„œ๋“œ : ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด

  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ํ˜ธ์ถœ : ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ (๋ฏธ๋ž˜์—) ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค

14. ES6 ๊ธฐ๋Šฅ

๋ฉ”์„œ๋“œ์˜ ์˜๋ฏธ

ES6 ์‚ฌ์–‘์—์„œ๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„์œผ๋กœ ์ •์˜๋œ ํ•จ์ˆ˜๋งŒ์„ ์˜๋ฏธํ•œ๋‹ค.
์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” non-constructor์ด์–ด์•ผ ๋ฉ”์„œ๋“œ์ด๋‹ค.

const obj = {
  a : 1,
  f(){return this.a;},			//(์ถ•์•ฝํ‘œํ˜„) ๋ฉ”์„œ๋“œ
  bar : function(){return this.a;}	//๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜
}

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

  • ํŠน์ง•

    ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” non-constructor์ด๋‹ค.
    ํ™”์‚ดํ‘œํ•จ์ˆ˜๋Š” ์ž์ฒด๋กœ this,arguments,super,new.target ๋ฐ”์ธ๋”ฉ์„ ๊ฐ–์ง€์•Š๋Š”๋‹ค.
    => ์Šค์ฝ”ํ”„์ฒด์ธ์„ ํ†ตํ•ด ์ƒ์œ„์Šค์ฝ”ํ”„๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
    => ํ™”์‚ดํ‘œํ•จ์ˆ˜๊ฐ€ ์ค‘์ฒฉ๋œ๋‹ค๋ฉด ๊ฐ€์žฅ๊ฐ€๊นŒ์šด ์ƒ์œ„ํ•จ์ˆ˜์ค‘์—์„œ ํ™”์‚ดํ‘œํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋Œ€์ƒ์„ ์ฐธ์กฐ

๋ฉ”์„œ๋“œ์™€ ํ™”์‚ดํ‘œํ•จ์ˆ˜

๋ฉ”์„œ๋“œ๋ฅผ ํ™”์‚ดํ‘œํ•จ์ˆ˜๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผํ•œ๋‹ค.
=> ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ์ „์—ญ์˜ this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ
๋ฉ”์„œ๋“œ ์ •์˜๋Š” ๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„์„ ์ถ”์ฒœ

profile
๋‚˜์˜ ํ•˜๋ฃจ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ธฐ์–ตํ•˜๊ณ  ์ฆ๊ธฐ๊ณ  ํ›„ํšŒํ•˜์ง€๋ง์ž

0๊ฐœ์˜ ๋Œ“๊ธ€