- event delegation์ ๊ดํด ์ค๋ช ํด์ฃผ์ธ์.
- this๋ JavaScript์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ช ํด์ฃผ์ธ์.
- prototype ๊ธฐ๋ฐ ์์์ ์ด๋ป๊ฒ ํ๋์ง ์ค๋ช ํด์ฃผ์ธ์.
- AMD์ CommonJS๋ ๋ฌด์์ด๊ณ , ์ด๊ฒ๋ค์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์๋์?
- ๋ค์ ์ฝ๋๊ฐ ์ฆ์ ํธ์ถ ํจ์ ํํ์(IIFE)๋ก ๋์ํ์ง ์๋ ์ด์ ์ ๊ดํด์ ์ค๋ช
ํด๋ณด์ธ์: function foo(){ }();.
- IIFE๋ก ๋ง๋ค๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผ ํ๋์?
- null๊ณผ unedefined ๊ทธ๋ฆฌ๊ณ undeclared์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ๋๊ฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น์?
- ํด๋ก์ ธ(Closure)๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ป๊ฒ/์ ์ฌ์ฉํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
- ํด๋ก์ ธ๋ฅผ ๋ง๋ค ๋ ์ ํธํ๋ ํจํด์ ๋ฌด์์ธ๊ฐ์? argyle (IIFEs์๋ง ์ ์ฉํ ์ ์๋ค)
- ์ต๋ช ํจ์(anonymous functions)๋ ์ฃผ๋ก ์ด๋ค ์ํฉ์์ ์ฌ์ฉํ๋์?
- ๋น์ ์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ๋์ง? (๋ชจ๋ ํจํด, ์ ํต์ ์์)
- ํธ์คํธ ๊ฐ์ฒด(Host Objects)์ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด(Native Objects)์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ๋ค์ ์ฝ๋์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
function Person(){} var person = Person() var person = new Person()
- .call๊ณผ .apply์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- Function.prototype.bind์ ์ค๋ช ํ์ธ์.
- document.write()๋ ์ธ์ ์ฌ์ฉํ๋์?
- UA ๋ฌธ์์ด์ ์ด์ฉํ์ฌ ๊ธฐ๋ฅ ๊ฒ์ถ(feature detection)๊ณผ ๊ธฐ๋ฅ ์ถ๋ก (feature inference)์ ์ฐจ์ด์ ์ ์ค๋ช ํ์ธ์.
- AJAX์ ๊ดํด ๊ฐ๋ฅํ ํ ์์ธํ ์ค๋ช ํ์ธ์.
- AJAX๋ฅผ ์ฌ์ฉํ์ ๋์ ์ฅ๋จ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- JSON์ด ์ด๋ป๊ฒ ๋์ ๋๋์ง ์ค๋ช ํ์ธ์. (๊ทธ๋ฆฌ๊ณ AJAX์ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์ค๋ช ํ์ธ์.)
- ๊ธฐ์กด์ JavaScript ํ ํ๋ฆฟ์ ์ฌ์ฉํ ์ ์ด ์๋์? ๋ง์ฝ์ ์๋ค๋ฉด, ์ด๋ ํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋์ง ๋ง์ํด์ฃผ์ธ์.
- "ํธ์ด์คํ (Hoisting)"์ ๋ํด์ ์ค๋ช ํ์ธ์.
- ์ด๋ฒคํธ ๋ฒ๋ธ๋ง(Event Bubbling)์ ๋ํด์ ์ค๋ช ํ์ธ์.
- ์ด๋ฒคํธ ์บก์ณ๋ง(Event Capturing)์ ๋ํด์ ์ค๋ช ํ์ธ์.
- "์์ฑ(Attribute)"์ "์์(property)"์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ๊ฐ์?
- ๋ด์ฅ๋ JavaScript ๊ฐ์ฒด๋ฅผ ํ์ฅํ๋ ๊ฒ์ด ์ข์ง ์์ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- document load event์ DOMContentLoaded event์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ==์ ===์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- JavaScript์ "๋์ผ์ถ์ฒ์ ์ฑ (the same-origin policy)"์ ๋ํด์ ์ค๋ช ํ์ธ์.
- ๋ค์ ์ฝ๋๋ฅผ ๋์ํ๊ฒ ๋ง๋์ธ์.
duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5]
- ์ผํญ์(Ternary statement)์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ด๊ณ , ๊ทธ๊ฒ์ ํํํ๊ธฐ ์ํ ์ฐ์ฐ์ ๋จ์ด๋ ๋ฌด์์ธ๊ฐ์?
- use strict;์ ๋ฌด์์ด๊ณ , ์ฌ์ฉํ์ ๋ ์ฅ๋จ์ ์ ๊ดํด์ ์ค๋ช ํด์ฃผ์ธ์.
- 100๋ฒ ๋ฐ๋ณต๋๋ ๋ฐ๋ณต๋ฌธ์ด ์์ต๋๋ค. 3์ ๋ฐฐ์์ผ ๋๋ fizz, 5์ ๋ฐฐ์์ผ ๋๋ buzz, 3๊ณผ 5์ ๊ณต๋ฐฐ์์ผ ๋๋ fizzbuzz๊ฐ ์ถ๋ ฅ๋๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ธ์.
- ์ ์ญ scope๋ฅผ ์ฌ์ฉํ์ ๋ ์ฅ๋จ์ ์ ๊ดํด ์ค๋ช ํด์ฃผ์ธ์.
- ๋๋๋ก load event๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๊ดํด ์ค๋ช ํด์ฃผ์ธ์. ๋ ๋จ์ ์ด ์๋ค๋ฉด ๋์์ ๋ํด์๋ ์ค๋ช ํด์ฃผ์ธ์.
- SPA์์ SEO์ ์ ๋ฆฌํ๋๋ก ๋ง๋ค๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- Promise๋ฅผ ์ฌ์ฉํด ๋ณธ ๊ฒฝํ์ด ์๋์?
- Promise๊ฐ ์ฝ๋ฐฑ ๋๋น ์ฅ/๋จ์ ์ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
- JavaScript์ ์๋๋ฐฉ์์ ์ฅ๋จ์ ์ ๊ดํด ์ค๋ช ํด์ฃผ์ธ์.
- JavaScript๋ฅผ ๋๋ฒ๊น ํ ๋ ์ฌ์ฉํ๋ ๋๊ตฌ๊ฐ ์์ผ๋ฉด ์ค๋ช ํด์ฃผ์ธ์.
- ๊ฐ์ฒด ์์ ์์ฑ๊ณผ ๋ฐฐ์ด์ ์์ดํ ์ ์ํํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ ๊ดํด ์ค๋ช ํด์ฃผ์ธ์.
- mutable object์ immutable object์ ๊ดํด ์ค๋ช
ํด์ฃผ์ธ์.
- JavaScript์์ immutable ๊ฐ์ฒด์ ์๋ฅผ ๋ค์ด๋ณด์ธ์.
- immutability์ ์ฅ/๋จ์ ์ ๋ฌด์์ธ๊ฐ์?
- ์์ ์ ์ฝ๋์์ ๋ถ๋ณ์ฑ(immutability๋ฅผ) ์ด๋ป๊ฒ ๋ฌ์ฑํ ์ ์๋์?
- ๋๊ธฐ๋ฐฉ์๊ณผ ๋น๋๊ธฐ ๋ฐฉ์ ํจ์์ ์ฐจ์ด์ ๊ดํด์ ์ค๋ช ํด์ฃผ์ธ์.
- event loop์ด๋ ๋ฌด์์ธ๊ฐ์?
- call stack๊ณผ task queue์ ๊ดํด ์ค๋ช ํด์ฃผ์ธ์.
- function foo() {}์ var foo = function() {}์์ foo ์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด๋ณด์ธ์.
- let, var, const์ ์ฐจ์ด์ ์ ๊ดํด์ ์ค๋ช ํด์ฃผ์ธ์.
this๋ JavaScript์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ช ํด์ฃผ์ธ์.
this๋ ํจ์์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๊ฒฐ์ ์ ํด ์ฃผ๋๋ฐ์. ๊ฐ์ฒด์ ๋ฉ์๋์ผ ๊ฒฝ์ฐ์๋ ํด๋น ๊ฐ์ฒด๊ฐ this๋ก ๋ฐ์ธ๋ฉ์ด ๋๊ณ , ์ผ๋ฐ ํจ์ ํธ์ถ์ผ ๊ฒฝ์ฐ์๋ window, global ๋ฑ์ ์ ์ญ ๊ฐ์ฒด๋ก ๋ฐ์ธ๋ฉ์ด ๋ฉ๋๋ค.
new ํค์๋๋ก ํธ์ถ๋ ์์ฑ์ ํจ์์ผ ๊ฒฝ์ฐ ํจ์ ํธ์ถ์์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ๊ทธ ๊ฐ์ฒด์ prototype์ ์์ฑ์ ํจ์์ prototype์ด ์ค์ ๋๋ฉฐ ์์ฑ๋ ์๋ก์ด ๊ฐ์ฒด๊ฐ this๋ก ๋ฐ์ธ๋ฉ ๋ฉ๋๋ค.
null๊ณผ unedefined ๊ทธ๋ฆฌ๊ณ undeclared์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
null์ ๋น ๊ฐ์ฒด๋ฅผ ๋ปํ๋ฉฐ undefined๋ ์ ์ธ๋ง ๋๊ณ ํ ๋น๋์ง ์์์ ๋ปํฉ๋๋ค.
undeclared๋ ์ ํจ๋ฒ์๋ฅผ ์ง์ ํ์ง ์์ ์ ์ญ์ ๋ปํฉ๋๋ค.
ํด๋ก์ ธ(Closure)๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ป๊ฒ/์ ์ฌ์ฉํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
ํด๋ก์ ๋ ๋
๋ฆฝ์ ์ธ ๋ณ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํจ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ก์ ์์ ์ ์๋ ํจ์๋ ๋ง๋ค์ด์ง ํ๊ฒฝ์ ๊ธฐ์ตํ๋ค. ํด๋ก์ ๋ฅผ ํตํด ์๋ํ๋ฅผ ํ ์ ์์ผ๋ฉฐ, ์ฝ๋ฐฑ ํจ์ ๋ฑ์ ์ฌ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ์๋ฌ๋ฅผ ํด๊ฒฐํ๋๋ฐ๋ ์ ์ฉํ๋ค.
- ์ฌ์ฉ ํ๋ ์ด์
1) ํ์ฌ ์ํ๋ฅผ ๊ธฐ์ตํ๊ณ ๋ณ๊ฒฝ๋ ์ต์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด
2) ์ ์ญ ๋ณ์์ ์ฌ์ฉ์ ์ต์ ํ๊ธฐ์ํด
3) ์ ๋ณด๋ฅผ ์๋ํ๊ธฐ ์ํด
JavaScript์ ์๋๋ฐฉ์์ ์ฅ๋จ์ ์ ๊ดํด ์ค๋ช
ํด์ฃผ์ธ์.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ V8 ์์ง์ ์ฌ์ฉํ๋ฉฐ, ์ฑ๊ธ ์ฐ๋ ๋ ๊ธฐ๋ฐ์ด๊ณ ์ฝ๋ฐฑ ํ๋ฅผ ์ฌ์ฉํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ฐ๋ ๋ ๊ธฐ๋ฐ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ํธ์ถ ์คํ์ด ํ๋์ด๊ณ ๋ฐ๋ผ์ ๊ทธ ํ๋์ ํธ์ถ ์คํ์ ์คํ๋ ์ฝ๋๊ฐ ํ๋์ฉ ์์ด๊ฒ ๋๋ค.
- ์ฑ๊ธ ์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋๋ฝ ๊ฐ์ ๋ฌธ์ ๋ ๋ณต์กํ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ฏผํ ํ์๋ ์์ผ๋, ํธ์ถ ์คํ์ ์ฒ๋ฆฌ ์๊ฐ์ด ์ด๋ง์ด๋งํ๊ฒ ์ค๋ ๊ฑธ๋ฆฌ๋ ํจ์๊ฐ ์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๋ ํด๋น ํจ์๊ฐ ์คํ๋๋ ๋์ ์๋ฌด๊ฒ๋ ํ์ง ๋ชปํ๊ณ ๊ฐ๋งํ ์๊ฒ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ํ์
(Primitive Data Type)์ ๋ช๊ฐ์ง์ด๋ฉฐ, ์ ๋ถ ๋งํด๋ฌ๋ผ
5๊ฐ์ง : Number, String, Boolean, Null, Undefined, (Symbol)
์๋ฐ์คํฌ๋ฆฝํธ์ Number Type์ ๋ค๋ฅธ ์ธ์ด๋ค๊ณผ ์ฐจ์ด์ ์ด ๋ฌด์์ธ๊ฐ, ์ ํ๋๋ง ์กด์ฌํ๋๊ฐ
์๋ฐ์คํฌ๋ฆฝํธ์ ๋๋ฒํ์
์ ๊ต์ฅํ ์ ์ฐํด์ ์์ง์ด ์ํ ๋๋ง๋ค ์์์ ๋ณํ์ด ๊ฐ๋ฅํ๋ค. ๋ค์ํ ์์ง์ด ์กด์ฌํ๋ ํ ์น ๊ฐ๋ฐํ๊ฒฝ ์ ์ด๋ฌํ ์๋ฐ์คํฌ๋ฆฝํธ ํ์
์ ์ ์ฐ์ฑ์ ํ์์ ์ธ ์์๋ผ๊ณ ์๊ฐํ๋ค.
์ต๋ช
ํจ์(anonymous functions)๋ ์ฃผ๋ก ์ด๋ค ์ํฉ์์ ์ฌ์ฉํ๋์?
์ต๋ช
ํจ์๋ ์ฆ์ ์คํ์ด ํ์ํ ์ํฉ์์ ์ฌ์ฉํ๋ค.
AJAX
AJAX๋ ๋น๋๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ xml์ ์ฝ์์ด๋ค. ์ฝ๊ฒ ๋งํ๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ xml ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์ ์ด๋ค. ๊ธฐ์กด์๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ๋ค์ ํ๋ฉด์ ๊ฐฑ์ ํด์ผ ํ๊ณ ์ด ๊ณผ์ ์์ ๋ง์ ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋์๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ajax๋ ํ์ด์ง์์ ํ์ํ ์ผ๋ถ๋ง ๊ฐฑ์ ํ ์ ์๋๋ก XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์๋ฒ์ ์์ฒญํ๋ค. ์ด๋ก ์ธํด ์์๊ณผ ์๊ฐ์ ๋ง์ด ์๋ ์ ์๋ค.
ํธ์ด์คํ
(Hoisting)
ํธ์ด์คํ
์ ์ธํฐํ๋ฆฌํฐ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํด์ํจ์ ์์ด์, Global ์์ญ ๋๋ ํจ์ ์์ญ ์์ ๋ํด์ ์ฃผ์ด์ง ์ ์ธ๋ค์ ๋ชจ๋ ๋์ด์ฌ๋ ค์ ํด๋น ์ ํจ ๋ฒ์ ์ต์๋จ์ ์ ์ธํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Callback๊ณผ Promise์ ์ฐจ์ด์
Callback | Promise |
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ง๋ค์ด ์ก๋ค. ์ด ํจ์๋ ๋ค๋ฅธ ํจ์์๊ฒ ์ธ์๋ก ์ ๋ฌ๋์ด ์ด๋ ์์ ์ ์คํ๋ ์ ์๋๋ก ๋์ ธ์ฃผ๋ ํจ์์ด๋ค. ํ์ง๋ง ์ฝ๋ฐฑ ์ง์ฅ์ด๋ผ ๋ถ๋ฆฌ๋ ์ค์ฒฉ๋ฌธ์ด ๋ฐ์ํ๋ฉด์ ์๋ฌ์ฒ๋ฆฌ ํ๊ณ๊ฐ ์๊ธฐ๊ธฐ ์์ํ๊ณ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Promise๊ฐ ๋ํ๋ฌ๋ค. | ์ด๋ค ๊ฐ์ด ์์ฑ ๋์์ ๋ ๊ทธ ๊ฐ์ ๋์ ํ๋ ๋๋ฆฌ์์ด๋ค. ๋น๋๊ธฐ ์ฐ์ฐ์ด ์ข
๋ฃ๋ ์ดํ์ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ์ด๋ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํ๋ ๊ฐ์ฒด์ด ๋ค. Promise ๊ฐ์ฒด๋ฅผ ํตํด ์ฑ๊ณต, ์คํจ, ์ค๋ฅ์ ๋ฐ๋ฅธ ํ์์ฒ๋ฆฌ๊ฐ ๋ฐ๋ก ๊ฐ๋ฅํด์ ๊ฐ๋ ์ฑ๋ ์ข๊ณ , ๋น๋๊ธฐ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ๋ ์์ํ๋ค. |
ES6 ์์ ์ถ๊ฐ๋ ์คํ(let, const, rest parameter, class, arrow function ๋ฑ)
- const๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ ๋ณ๊ฒฝ์ด ๋ ์ ์๋ ๋ณ์๋ let์ ์ฌ์ฉํ๋ค.
- var์ ์ด์ ์ฌ์ฉํ์ง ์๋๋ค.
- startWith(), endWirh(), includes()๋ฑ์ String ๋ฉ์๋๊ฐ ์ถ๊ฐ๋์๋ค.
- set, weakset ์ผ๋ก ์ค๋ณต๋๋ ๊ฐ์ด ์๋์ง ํ์์ด ๊ฐ๋ฅํ๋ค.
let, var, const์ ์ฐจ์ด์ ์ ๊ดํด์ ์ค๋ช
ํด์ฃผ์ธ์.
let, const ์ค๋ณต์ด๋ ํธ์ด์คํ
์ ์ ์ธํ์ง ์๋๋ค. ๋ธ๋ก ๋จ์์ ๋ณ์ํ์
์ด๋ค.
event loop๋ ๋ฌด์์ธ๊ฐ์?
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด Call Stack๊ณผ Callback Queue์ ์ํ๋ฅผ ์ฒดํฌํ์ฌ Call Stack์ด ๋น ์ํ๊ฐ ๋๋ฉด, Callback Queue์ ์ฒซ๋ฒ์งธ ์ฝ๋ฐฑ์ Call Stack์ผ๋ก ๋ฐ์ด ๋ฃ๋๋ค.
this๋ JavaScript์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
this๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ์์ ๋ฐ์ธ๋ฉ์ด ์ด๋ฃจ์ด์ง๋ ์คํ ์ปจํ
์คํธ ์ค ํ๋๋ก, ํด๋น ํจ์๊ฐ ์คํ๋๋ ๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ํจ์ ํธ์ถ ๋ถ๋ถ์์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ๋ฌด์์ธ์ง๋ฅผ ํ์ธํ ์ ์๋ค. ๋๋ก๋ ๋ณต์กํ ์ฝ๋์์ ์์์ ๋ฐ์ธ๋ฉ์ ์ํด ํผ๋์ค๋ฌ์ด ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ call์ด๋ apply ๊ฐ์ ๋ด์ฅ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช
์์ ์ผ๋ก ๋ฐ์ธ๋ฉ์ ํด ์ค๋ค.
prototype ๊ธฐ๋ฐ ์์์ ์ด๋ป๊ฒ ํ๋์ง ์ค๋ช
ํด์ฃผ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์๋ Prototype์ด๋ผ๋ ๋ด๋ถ ํ๋กํผํฐ๊ฐ ์๊ณ , ์ด๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๋ ์ฌ์ฉํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์ ์์์ ์งํํ ๋๋ ํ๋กํ ํ์
๋ผ๋ฆฌ ์ฐ๊ฒฐ์ ํ๋๋ฐ, ๋ถ๋ชจ ํ๋กํ ํ์
์ create()๋ setPropertyOf() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋กํ ํ์
๊ณผ ์ฐ๊ฒฐํ๋ค.
async๊ณผ await์ ์ฐจ์ด์
- async/await์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋๊ธฐ์์ผ๋ก ํํํ๋ ๋ ๋์ ๋ฐฉ๋ฒ์ผ๋ก ES2017์ ๋ฑ์ฅํ์๋ค.
- async์ await๋ ํญ์ ๊ฐ์ด ๋ถ์ด ์์ด์ผ ํ๋ค.
- await ๋ชจ๋๋ Promise ๊ฐ์ฒด๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ , ๋ง์ฝ ๋น๋๊ธฐ ํจ์๊ฐ ์๋ ๋๊ธฐ์ ํจ์๋ผ๋ฉด ๋ฆฌํด ๊ฐ์ ๊ทธ๋๋ก ๋ฐ๋๋ค.
- async ํจ์๋ Promise ๊ฐ์ฒด๋ฅผ ํตํด ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๋ด์ฉ์ ๋๊ธฐ์ ์ธ ์ฝ๋ ์งํ ์์๋ก ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ๋ค.
Class๋ ๋ฌด์์ด๊ณ , Prototype, fucntion์ ES5 ์คํ๋ง์ผ๋ก Class๋ฅผ ๊ตฌํํ ์ ์๋๊ฐ
class๋ ๋นตํ์ด๋ค. ๋ฐ์ฃฝ(๊ฐ์ฒด)๋ฅผ class์ ๋ฃ์ผ๋ฉด ์ํ๋ ๋ชจ์์ ๋นต์ด ๋์ค๋ ๋นตํ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
ํ๋กํ ํ์
์ผ๋ก ํด๋์ค๋ฅผ ๊ตฌํ ๊ฐ๋ฅํ๋ค. ์์ฑ์๋ฅผ ์ด์ฉํ์ฌ ํด๋์ค์ฒ๋ผ ์ฌ์ฉ ํ ์๋ ์์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๊ฐ์ ํธ์ถ์ ๋ฐ๋ณตํ๋ค๋๊ฐ์ ๋ถํ์ํ ํ๋์ด ๋ฐ๋ณต๋์ด ํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋์ง ๋ชปํฉ๋๋ค. ๊ทธ๋์ ํ๋กํ ํ์
์ด๋ผ๋ ๋น ๊ฐ์ฒด์ ๋ฏธ๋ฆฌ ๊ฐ๋ค์ ๋ด์๋๊ณ ์๋ก ์์ฑํ ๊ฐ์ฒด๋ ๊ทธ ํ๋กํ ํ์
์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ๊ฐ์ถฐ์ ํด๋์ค์ ํ์ฉ์ฒ๋ผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์๋ค.
use strict ์ ๋ฌด์์ด๊ณ , ์ฌ์ฉํ์ ๋ ์ฅ๋จ์ ์ ๊ดํด์ ์ค๋ช
ํด์ฃผ์ธ์.
use strict๋ ์๊ฒฉ ๋ชจ๋๋ก ์ ์ฒด ์คํฌ๋ฆฝํธ ๋๋ ๋ถ๋ถ ํจ์์ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ฅ์ | 1. ๊ธฐ์กด์ ๋ฌด์๋๋ ์๋ฌ๋ค์ด throw ๋๋ฉฐ 2. JS ์์ง ์ต์ ํ ์์ ์ ์ด๋ ต๊ฒ ๋ง๋๋ ์ค์๋ค์ ๋ฐ๋ก ์ก๊ณ 3. ECMAScript์ ์ฐจ๊ธฐ ๋ฒ์ ์์ ์ ์๋ ๋ฌธ๋ฒ๋ค์ ๊ธ์งํ๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค. |
๋จ์ | ์๊ฒฉ ๋ชจ๋์์๋ ์ด์ ์ ํ์ฉ๋๋ ์ค์๋ฅผ ์ค๋ฅ๋ก ๋ฐ๊พธ์ด ๋๋๋ค. ๋ํ ์ญ์ ํ ์ ์๋ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ๋ฉด ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค. |
๋ชจ๋ ํจํด๊ณผ ์ ํต์ ์์, ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๋งํด๋ฌ๋ผ.
์ ํต์ ์์ | ๋ชจ๋ ํจํด |
(์ฅ) ๋ชจ๋ ํจํด์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ํด๋น ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ ์ญ์์ ์ธ์คํด์คํ ๋์ด ๋ค๋ฅธ ์ฝ๋์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค. (๋จ) ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ด์ฑ์ ์๊ธฐ ์ด๋ ค์ ์ฝ๋๊ด๋ฆฌ๊ฐ ์ด๋ ค์ฐ๋ฉฐ ๊ฐ์ฉ์ฑ์ด ๋จ์ด์ง๋ค. |
- ๋ชจ๋ ํจํด์ ์ ์ญ ์์ญ์์ ํน์ ๋ณ์์์ญ์ ๋ณดํธํ๊ธฐ ์ํด ๋จ์ผ ๊ฐ์ฒด ์์ public/private์ ๋ณ์๋ฅผ ํฌํจํ ์ ์๋ ๊ฐ ํด๋์ค ํ์์ ๊ฐ๋
์ ๊ตฌํํ๋๋ฐ ์ฌ์ฉ๋๋ค. - ์๋ํ, ๋คํ์ฑ, ์์์ ํตํด ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค - ์ถ๊ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์ ์ถฉ๋ํ๋ ๊ฒ์ ์ค์ฌ์ค ์ ์๋ค. |
const count = 3 const publicMethod = function () { console.log('Public Method : ', count); } const publicMethod2 = function () { console.log('Public Method2 : ', count); } publicMethod(); publicMethod2(); |
class Module { private count: number = 3 private privateMethod() { console.log('Private Method : ', this.count); } publicMethod() { console.log('Public Method : ', this.count); } public publicMethod2() { console.log('Public Method2 : ', this.count); } } const mod = new Module(); // mod.privateMethod(); // coudn't access mod.publicMethod(); mod.publicMethod2(); |
Javascript Scope Chaining
์คํ ์ปจํ
์คํธ ๋ด์์ ๋ณ์๋ฅผ ํ์ํ ๋ ์ค๋ณต๋๋ ๋ณ์๊ฐ ์๋๋ผ๋ ๋จผ์ ํ์๋ ๋ณ์๋ฅผ ์ฐ์ ์ ์ผ๋ก ์คํ์ํค๋ ๋ฐฉ์์ด๋ค.
์ด๋ฒคํธ ๋ฒ๋ธ๋ง(Event Bubbling), ์ด๋ฒคํธ ์บก์ณ๋ง(Event Capturing)์ ๋ํด์ ์ค๋ช
ํ์ธ์.
- ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ํน์ ํ๋ฉด ์์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋ ์์ ์์๋ค๋ก ์ ๋ฌ๋์ด๊ฐ๋ ํน์ฑ์ ์๋ฏธํ๋ค.
- ์ด๋ฒคํธ ์บก์ฒ๋ง์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง๊ณผ ๋ฐ๋๋ก ์์ ์์์์ ํ์ ์์๋ก ํ์ํ๋ฉฐ ์ด๋ฒคํธ๋ฅผ ์ ํํ๋ ๋ฐฉ์์ด๋ค.
ES6์์ ํ์ดํ ํจ์์ ์ผ๋ฐ ํจ์์ ์ฐจ์ด
์ผ๋ฐ ํจ์๋ ํจ์๋ฅผ ์ ์ธํ ๋ this์ ๋ฐ์ธ๋ฉํ ๊ฐ์ฒด๊ฐ ์ ์ ์ผ๋ก ๊ฒฐ์ ๋๋ ๊ฒ์ด ์๋๊ณ , ํจ์๋ฅผ ํธ์ถํ ๋ ํจ์๊ฐ ์ด๋ป๊ฒ ํธ์ถ๋์๋์ง์ ๋ฐ๋ผ this์ ๋ฐ์ธ๋ฉํ ๊ฐ์ฒด๊ฐ ๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ค. ๋ฐ๋ฉด์, ํ์ดํ ํจ์๋ ํจ์๋ฅผ ์ ์ธํ ๋ this์ ๋ฐ์ธ๋ฉํ ๊ฐ์ฒด๊ฐ ์ ์ ์ผ๋ก ๊ฒฐ์ ๋๋ค.
JSON๊ณผ ์ฅ์
JSON์ ๊ฒฝ๋ํ๋ ํ์ผ ํ์์ด๋ค.
(์ฅ) ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ๊ฐ์ฒด๋ ์ฐ๊ด๋ฐฐ์ด(Key/Value)์ ๊ธฐ์ด๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, JSON์ ์ด๋ฌํ ์ฐ๊ด ๋ฐฐ์ด์ ํ์ํ๋๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ธ ๋ฐฉ์์ด๋ค. JSON์ ํ
์คํธ ํฌ๋ฉง์ด๋ฉฐ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ์ด๋ค. AJAX์์ JSON ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ฉด eval() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์์๋ ํค ๊ฐ์ ๋ฐ๋ก ๋ถ๋ฌ์ฌ ์ ์๋ค.
(๋จ) XML๋ก๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ง๋ง, ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ๋ถํ์ํ๊ฒ ์ฆ๊ฐ์ํฌ ์ ์์ผ๋ฉฐ, ํ์ฑ ์์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ๋ ์ ๊ฒฝ์ ์จ ์ฃผ์ด์ผ ํ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ ์ญ scope์ ์ฅ๋จ์
์๋ฐ์คํฌ๋ฆฝํธ์๋ ์ค์ฝํ ์ฒด์ธ(scope chain)์ด๋ผ๋ ๊ฐ๋
์ด ์๋๋ฐ, ๋ด๋ถ ํจ์์์๋ ์ธ๋ถํจ์์ ๋ณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง ์ธ๋ถ ํจ์์์๋ ๋ด๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค. ๋ด๋ถ ํจ์์์๋ ๋ณ์๋ฅผ ๋จผ์ ํด๋น ์ค์ฝํ์์ ์ฐพ์ ๋ค, ๋ง์ฝ ์์ผ๋ฉด outer ์ค์ฝํ์์ ์ฐพ๊ณ , ๊ทธ๋ ๊ฒ ํ๊ณ ์ฌ๋ผ๊ฐ๋ค๊ฐ ๊ฒฐ๊ตญ ์ ์ญ scope์์ ์ฐพ๋๋ค. ๋ฐ๋ผ์ ์ ์ญ ๋ณ์๋ฅผ ๋ง๋ค์ด์ ์์
ํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์์ ํ์
ํ ๋ ์ฐ์ฐํ ๊ฐ์ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํด์ ์ด์ ์ ๋ณ์๋ฅผ ๋ฎ์ด์ฐ๋ ๋ถ์์ฌ๊ฐ ๋ฐ์ํ ์๋ ์๋ค. ๊ตณ์ด ์ ์ญ ๋ณ์์ ์ฅ์ ์ ๊ผฝ์๋ฉด ํจ์ ๋ด์ ์ง์ญ ๋ณ์์ ๋ฌ๋ฆฌ, ์ ์ฅ๋ ๊ฐ์ด ์ฌ๋ผ์ง์ง ์๋๋ค๋ ์ ์ด๋ค.
function foo() {} ์ var foo = function() {} ์์ foo์ ์ฐจ์ด
์ ์๋ ํจ์ ์ ์ธ(function statement)์ด๋ฉฐ ํ์๋ ํจ์ ํํ(function literal)์ด๋ค.
- ํจ์ ์ ์ธ์ ์ฝ๋ ๋ธ๋ญ ์์ฒด๊ฐ ์คํ ๊ฐ๋ฅ ์ฝ๋๊ฐ ์๋๋ผ๋ ๊ฒ์ด๋ค. ํด๋น ์ฝ๋ ๋ธ๋ญ์ ์ฝ์์์ ์คํํ์ฌ๋ ์ด๋ ํ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด๋์ง ์๋๋ค. Class์ ๋์ผํ ๊ฐ๋
์ผ๋ก ์ดํดํด๋ ๋๋ค.
- ํจ์ ํํ์ ํน์ ๋ณ์์ ํ ๋น๋๊ฑฐ๋ ์ฆ์ ์คํ๊ฐ๋ฅํ ์ฝ๋ ๋ธ๋ญ์ผ๋ก์ ์กด์ฌํ๋ ํจ์๋ฅผ ์๋ฏธํ๋ ๊ฒ์ด๋ค. ๋์ ํธ์ด์คํ
๊ด์ ์์ ์ฐจ์ด๊ฐ ์๋ค. ์ ์ธ์์ ํธ์ด์คํ
๋์ง๋ง ํํ์์ ํธ์ด์คํ
๋์ง ์๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ์ค๋ช
ํด ์ฃผ์ธ์.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ณ์ฐ์ ์ํ์ ํจ์์ ์กฐํฉ์ผ๋ก ์๊ฐํ๋ ๋ฐฉ์์ ๋งํ๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํจ์๊ฐ ํน์ ๋์์ ์ํํ๋ ์ญํ ์ ๋ด๋นํ๋ ๊ฒ๊ณผ๋ ๋ฐ๋๋๋ ๊ฐ๋
์ผ๋ก, ํจ์๋ฅผ ์ํํด๋ ํจ์ ์ธ๋ถ์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ์๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์์ ํจ์(pure function)๋ฅผ ์กฐํฉํ๊ณ ๊ณต์ ์ํ(shared state), ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ(mutable data) ๋ฐ ๋ถ์์ฉ(side-effects)์ ํผํ์ฌ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ํ๋ก์ธ์ค๋ค. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ช
๋ นํ(imperative)์ด ์๋ ์ ์ธํ(declarative)์ด๋ฉฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ๋ ์์ํจ์๋ฅผ ํตํด ์ ๋ฌ๋๋ค.
Callback๊ณผ ์ด๊ฒ์ ์ฌ์ฉํ๋ ์ด์
- ๋์์ธ ํจํด ์ค ํ๋์ธ ์ต์ ๋ฒ(Observer) ํจํด์์ ๋์จ ๊ฐ๋
์ผ๋ก์จ ๊ฐ์ฒด์ ์ํ ๋ณํ(์ด๋ฒคํธ)๊ฐ ๋ฐ์ ํ์์ ๊ฒฝ์ฐ์ ์ด๋ฌํ ์ฌ์ค์ ํจ์๋ฅผ ํตํด ์ ๋ฌํ๊ฒ ๋๋๋ฐ, ์ด๋ฅผ ์ฝ๋ฐฑ ํจ์๋ผ๊ณ ํ๋ค.
- ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์๋ฒ๋ก ์ด๋ ํ ์์ฒญ์ ๋ณด๋ธ๋ค๊ณ ๊ฐ์ ํ ๋ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋๋์ ๊ฐ๋งํ ์๊ฐ์ ๋ฒ๋ฆฌ๋ ๊ฒ์ด ์๋, ๋ค๋ฅธ ์์
์ ํจ์ผ๋ก์จ ๋๊ธฐ์ ์ธ ์ฝ๋์ ๋นํด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ์๋ .call()๊ณผ .apply(), .bind() ์ฐจ์ด๋ฅผ ์ค๋ช
ํ์์ค.
this๊ฐ ํจ์ ํธ์ถ์์ ๋ฐ๋ผ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅด์ผฐ๋ค๋ฉด call apply bind๋ ํจ์๊ฐ ์ง์ ์คํ๋ฌธ๋งฅ์ ๊ฒฐ์ ํ๋ค. ๊ทธ ์ค์ call, apply๋ ํจ์๋ฅผ ํธ์ถํด ์คํํ๋ค. call apply๋ฅผ ์ฌ์ฉํ์๋์ ์ฅ์ ์ ์ฒซ๋ฒ์งธ ์ธ์๊ฐ ์๋๋ผ๋ ์๋ฌ์์ด ์คํ์ด ๊ฐ๋ฅํ๋ค.(์๋์ผ๋ก ์ ์ญ๊ฐ์ฒด๋ฅผ ์ง์ ํ์ฌ ์คํ) bind๋ ์ง์ ํ ๊ฐ์ฒด์ ํจ์๋ฅผ ๋ง๋ ๋ค. ์ ๋ฆฌํ๋ฉด call apply๋ ํจ์๋ฅผ ์คํ์์ผ์ฃผ๋ ๊ฒ์ด๊ณ ,
bind๋ ์ ํจ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด๋ค.
ํธ์คํธ ๊ฐ์ฒด(Host Objects)์ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด(Native Objects)์ ์ฐจ์ด์
- ํธ์คํธ ๊ฐ์ฒด๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์ ๊ณตํ๋ window, XMLHttpRequest, HTMLElement ๋ฑ์ DOM ๋
ธ๋ ๊ฐ์ฒด์ ๊ฐ์ด ํธ์คํธ ํ๊ฒฝ์ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ํ๊ฒฝ๊ณผ ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ ๋์ํ๋ ํ๊ฒฝ์ ์๋ฐ์คํฌ๋ฆฝํธ(Node.js)๋ ๋ค๋ฅธ ํธ์คํธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ํ๊ฒฝ์ ํธ์คํธ ๊ฐ์ฒด๋ ์ ์ญ ๊ฐ์ฒด์ธ
window, BOM(Browser Object Model)๊ณผ DOM(Document Object Model) ๋ฐ XMLHttpRequest ๊ฐ์ฒด ๋ฑ์ ์ ๊ณตํ๋ค.
- ๋ค์ดํฐ๋ธ ๊ฐ์ฒด๋ ECMAScript ๋ช
์ธ์ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋งํ๋ฉฐ, ์ดํ๋ฆฌ์ผ์ด์
์ ์ญ์ ๊ณตํต ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๋ค์ดํฐ๋ธ ๊ฐ์ฒด๋ ์ดํ๋ฆฌ์ผ์ด์
ํ๊ฒฝ๊ณผ ๊ด๊ณ์์ด ์ธ์ ๋ ์ฌ์ฉํ ์ ์๋ค.
Object, String, Number, Function, Array, RegExp, Date, Math์ ๊ฐ์ ๊ฐ์ฒด ์์ฑ์ ๊ด๊ณ๊ฐ ์๋ ํจ์ ๊ฐ์ฒด์ ๋ฉ์๋๋ก ๊ตฌ๋ถ๋๋ค.