[JavaScript] ์ตœ์ข… ์ •๋ฆฌ ๐Ÿ˜›

soyeonยท2022๋…„ 8์›” 8์ผ
0
post-thumbnail

Variable(๋ณ€์ˆ˜)

๋ณ€์ˆ˜(var, let, const) ์ฐจ์ด

: var์€ function-level scope๋ฅผ ๊ฐ€์ง€๊ณ , let๊ณผ const๋Š” block-level scope๋ฅผ ๊ฐ€์ง„๋‹ค.
var์€ ์ค‘๋ณต์„ ์–ธ, ์žฌ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ let์€ ์ค‘๋ณต์„ ์–ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ˜ธ์ด์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์•ˆ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. const๋Š” ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•ด ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์žฌํ• ๋‹น์ด ๊ธˆ์ง€๋œ๋‹ค.

hoisting?

: ์ฝ”๋“œ์—์„œ ์•„๋ž˜์ชฝ์— ์„ ์–ธํ•œ ๋ณ€์ˆ˜๊ฐ€ scope์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง„ ๊ฒƒ ๊ฐ™์€ ํ˜„์ƒ์„ ๋งํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ชจ๋“  ์‹๋ณ„์ž๋ฅผ ํŒ๋‹จํ•œ ํ›„์— runtime์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ์„ ์–ธ๋ณด๋‹ค ๋จผ์ € ํ˜ธ์ถœ์„ ํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

immutable vs mutable

: immutable์€ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ , mutable์€ ๊ฐ’์ด ๋ณ€ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž…

literal

: ํŠน์ •ํ•œ ๊ฐ’์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž, ์•ฝ์†๋œ ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค.
์ˆซ์ž literal, ๋ฌธ์ž literal, ๊ฐ์ฒด literal, ๋ฐฐ์—ด literal, ํ•จ์ˆ˜ literal๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ literal์ด ์กด์žฌํ•œ๋‹ค.

๊ฐ data type์˜ ํŠน์ง•

  • number : ์ •์ˆ˜์™€ ์‹ค์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ชจ๋“  ์ˆซ์ž๋ฅผ 64๋น„ํŠธ ์‹ค์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • string : ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•œ๋‹ค. '', "", `` ๊ณผ ๊ฐ™์€ ๊ธฐํ˜ธ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • boolean : true, false ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • undefined : ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋Š” undefined ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
  • null : ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • symbol : ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์ƒ์„ฑํ•ด๋‚ธ๋‹ค. uniqueํ•œ ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ์€ ํ•  ์ˆ˜ ์—†๋‹ค. symbol์€ ๋‹ค๋ฅธ data type์œผ๋กœ ํ˜•๋ณ€ํ™˜ ํ•  ์ˆ˜ ์—†๋‹ค.

=> Primitive type(์›์‹œ ํƒ€์ž…)์œผ๋กœ ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

  • object : key์™€ value์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

=> Reference type์œผ๋กœ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

ํ•จ์ˆ˜

ํ•จ์ˆ˜์ •์˜ 4๊ฐ€์ง€

  • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
    : function keyword๋ฅผ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ ํ‘œํ˜„์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ณ€์ˆ˜์— ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
    function ํ•จ์ˆ˜์ด๋ฆ„(ํŒŒ๋ผ๋ฏธํ„ฐ/๋งค๊ฐœ๋ณ€์ˆ˜) {๋ฆฌํ„ด๊ฐ’} ํ˜•์‹์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹
    : ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

  • Function ์ƒ์„ฑ์ž
    : ์ƒ์† ๊ด€๊ณ„๋ฅผ ์œ„ํ•ด ๋งŒ๋“œ๋Š” ๊ฒƒ์œผ๋กœ new Function()์„ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.

  • Arrow function
    : ์ถ•์•ฝ ํ‘œํ˜„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

hoisting

: ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ hoisting์ด ๋˜๊ณ , ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ hoisting์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.
์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์žˆ์œผ๋ฉด ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค. ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ์— ํ•จ์ˆ˜ ๋‚ด์šฉ์„ ๋„ฃ๊ณ , ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ํ•จ์ˆ˜ ๋‚ด์šฉ์ด ์ ํžŒ ์ฃผ์†Œ๋ฅผ ๋„ฃ๋Š”๋‹ค.
ํ•˜์ง€๋งŒ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์—์„œ๋Š” ์‹๋ณ„์ž๋ฅผ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•˜๊ณ  ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” undefined๋ฅผ ๋„ฃ๋Š”๋‹ค. ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•จ์ˆ˜ ๋‚ด์šฉ์„ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ๊ณ  ์‹๋ณ„์ž๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์— ํ•จ์ˆ˜ ๋‚ด์šฉ์ด ์ ํžŒ ์ฃผ์†Œ๋ฅผ ๋„ฃ๋Š”๋‹ค.
ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ runtime ์ด์ „์— ๋งŒ๋“ค์–ด์ง€๊ณ , ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ runtime์— ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘์ฒฉํ•จ์ˆ˜, callback ํ•จ์ˆ˜, ๊ณ ์ฐจํ•จ์ˆ˜

: ์ค‘์ฒฉํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์•ˆ์— ํ•จ์ˆ˜๊ฐ€ ๋˜ ๋“ค์–ด์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.
์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜์™€ ๊ฒฐํ•ฉํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์‹œ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๊ณ ์ฐจํ•จ์ˆ˜๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

IIFE ์™œ ์‚ฌ์šฉํ• ๊นŒ

: IIFE๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋กœ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•จ๊ณผ ๋™์‹œ์— ํ˜ธ์ถœํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ง€์—ญ๋ณ€์ˆ˜ํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ „์—ญ ๋ณ€์ˆ˜๋“ค์ด ๊ฐ™์€ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•ด ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋กœ ๋ฌถ์–ด ๋†“์œผ๋ฉด ๊ฐ๊ฐ์˜ ํŒŒ์ผ์—์„œ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์–ด๋„ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์—ฌ๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ „์—ญ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์„ ์ค„์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๊ฐ€๋…์„ฑ์ด ๋‚˜๋น ์ง€๊ณ  ๋ฉ”๋ชจ๋ฆฌ resource๋ฅผ ๋” ์†Œ๋ชจํ•˜๊ฒŒ ๋œ๋‹ค. ์ „์—ญ ๋ณ€์ˆ˜๋Š” scope chain์˜ ๊ฐ€์žฅ ์ƒ๋‹จ์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐพ์„ ๋•Œ๋„ ๋Šฆ๊ฒŒ ์ฐพ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Scope

  • ํ•จ์ˆ˜ level scope
    : ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๊ณ , ํ•จ์ˆ˜ ๋ฐ–์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • block level scope
    : ์ฝ”๋“œ ๋ธ”๋ก ์•ˆ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค.
  • lexical scope
    : ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ, scope๋ฅผ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ๊ณณ์„ ๊ธฐ์ค€์œผ๋กœ ์„ค์ •ํ• ์ง€, ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋œ ๊ณณ์„ ๊ธฐ์ค€์œผ๋กœ ์„ค์ •ํ• ์ง€๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค. lexical scope๋Š” ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋œ ๊ณณ์„ ๊ธฐ์ค€์œผ๋กœ scope๋ฅผ ์„ค์ •ํ•œ๋‹ค.

์ผ๊ธ‰ ๊ฐ์ฒด

  1. ์ต๋ช…์˜ literal๋กœ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ๊ฐ์ฒด๊ฐ€ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  3. ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ์ด ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  4. ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด

built-in ์ƒ์„ฑ์ž ํ•จ์ˆ˜

: Javascript์—์„œ ์ œ๊ณตํ•˜๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ด๋‹ค.
Object, String, Array, Number, Boolean, Function ๊ณผ ๊ฐ™์€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฐ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋“ค๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ •์˜

: ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋™์ผํ•œ property๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค. "new" keyword๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋ฉด ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ด๊ณ , ์•„๋‹ˆ๋ฉด ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ์“ฐ์ด๊ฒŒ ๋œ๋‹ค.

constructor vs non-constructor

  • constructor : ํ•จ์ˆ˜์„ ์–ธ๋ฌธ, ํ•จ์ˆ˜ํ‘œํ˜„์‹, class์œผ๋กœ๋งŒ instance๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ์ž์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
  • non-constructor : arrow function, ES6 ํ•จ์ˆ˜ ์ถ•์•ฝํ˜•์€ [[Constructor]]์ด ์กด์žฌํ•˜์ง€ ์•Š์•„์„œ instance๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

ํ•จ์ˆ˜ ๊ฐ์ฒด์˜ ๊ธฐ๋ณธ property

  • arguments : ์œ ์‚ฌ๋ฐฐ์—ด ๊ฐ์ฒด
  • caller : ํ•จ์ˆ˜ ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ reference
  • length : ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜
  • name : ํ•จ์ˆ˜์˜ ์ด๋ฆ„
  • prototype : ํ•ด๋‹น ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•˜๋Š” instance๊ฐ€ ๋‚ด๋ถ€ ์Šฌ๋กฏ [[Prototype]]์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด instance์—์„œ __proto__๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

Prototype chain

: ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” property๋ฅผ chain์„ ๋”ฐ๋ผ์„œ ์ฐพ์•„ ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ์ธ์Šคํ„ด์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ 2๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ž์‹ ์˜ [[Prototype]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์˜ ์ฐธ์กฐ๋ฅผ ๋”ฐ๋ผ๊ฐ„๋‹ค.

Prototype ๊ต์ฒด(๋™์  ์ƒ์†)

๋™์  ์ƒ์† : extends ํ‚ค์›Œ๋“œ ๋’ค์— ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋Š” ์‹์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

๋งŒ๋“ค์–ด๋‚ธ ๊ฐ์ฒด.__proto__๋ฅผ ํ†ตํ•ด์„œ ์ƒ์† ๊ด€๊ณ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

Closure(ํด๋กœ์ €)

closure๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€

: ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ lexical ํ™˜๊ฒฝ์˜ ์กฐํ•ฉ์ด๋‹ค.

closure๋Š” ์ค‘์ฒฉํ•จ์ˆ˜๋กœ ์ด ์ค‘์ฒฉํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ return ๋œ๋‹ค. return ๋˜๋Š” ์ค‘์ฒฉํ•จ์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜๋ณด๋‹ค ๊ธธ๊ณ , ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ด๋•Œ, ์ค‘์ฒฉํ•จ์ˆ˜์—์„œ ์™ธ๋ถ€ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ์‹คํ–‰์€ execution context stack์—์„œ ์‚ฌ๋ผ์ง€์ง€๋งŒ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ lexical ํ™˜๊ฒฝ์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ์–ด์„œ ์ค‘์ฒฉํ•จ์ˆ˜์— ์˜ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
closure๋Š” information hiding์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

Class

class์˜ ๊ฐœ๋…, ์‚ฌ์šฉ

: ํ˜„์‹ค์„ธ๊ณ„์— ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ์ˆ˜๋‹จ์ด๋‹ค. instance๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•˜๋‹ค. class ์ž์ฒด๊ฐ€ ํ•จ์ˆ˜์ด๋ฉด์„œ ๊ฐ์ฒด์ด๋‹ค. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜๋“œ์‹œ new keyword๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ƒ์†์™€ hoisting์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Array

Array์˜ ํŠน์ง•

๋ฐฐ์—ด์˜ ๊ฐ๊ฐ ์š”์†Œ๋ฅผ ์ˆซ์ž index๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ˆœ์„œ๊ฐ€ ์žˆ๊ณ , length๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” method

  • map
  • filter
  • splice
  • push

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