Front-End/JavaScript

[Javascript] ์•Œ์“ธ์‹ ์žก(์•Œ์•„๋‘๋ฉด ์“ธ๋ชจ์žˆ๋Š” ์‹ ๊ธฐํ•œ ์žก์•„์Šคํฌ๋ฆฝํŠธ) - 1

Splin 2023. 2. 5. 15:30

๋‹ค์–‘ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์„œ์ ๊ณผ ๊ธ€์„ ๋ณด๊ณ  ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ์ง๋ฉดํ•˜๋ฉด์„œ ์ƒ์†Œํ•˜๊ฒŒ ๋А๋‚€ ๋ถ€๋ถ„๋“ค์„ ์ •๋ฆฌํ•ด๋…ผ ๊ธ€ ์ž…๋‹ˆ๋‹ค. (๋ชฉ์ฐจ๋ฅผ ๋ณด๊ณ  ๊ด€์‹ฌ์žˆ๋Š” ๋ถ€๋ถ€๋งŒ ์ฝ์–ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.)

๋‹จ์ˆœํžˆ ์ œ ์ฃผ๊ด€์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ์ž‘์„ฑํ•˜๋Š” ๊ธ€์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ด๋“œ๊ฐ€ ๋  ์ˆ˜๋Š” ์—†์œผ๋‹ˆ ์ฃผ์˜ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐ŸŒŸ

 

 

1. REPL(Read Eval Print Loop)

๊ธฐ๋ณธ์ ์œผ๋กœ Javascript๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ํ•œ์ค„ ์”ฉ ์ฝ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์˜ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

์ด Javascript๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ˜์†”์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, ๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ˜์†”์—์„œ ํ•œ ์ค„์”ฉ ์ž…๋ ฅ(Read)๋ฐ›๊ณ  ๋ฐ›์€ ์ž…๋ ฅ์„ ํ‰๊ฐ€(Eval)ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ(Print)ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋‹ค์‹œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜ ์ƒˆ๋กœ์šด ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.(Loop)

์ด ๊ณผ์ •์„ REPL(Read-Eval-Print-Loop)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

2. Number์™€ parseInt/parseFloat์˜ ์ฐจ์ด

์•„๋ž˜์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด Number๋Š” ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์ด ์ „๋ถ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด Nan(Not a Number)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  parseInt/parseFloat์€ Int์™€ Float์œผ๋กœ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๊นŒ์ง€ ์ฝ์–ด ํ•ด๋‹น ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Number('234์˜ค์˜ค์˜คํ…Œ์ŠคํŠธ324'); // Nan(Not a Number)
โ€‹
parseInt('234์˜ค์˜ค์˜คํ…Œ์ŠคํŠธ324'); // 234
parseInt('234.23423์˜ค์˜ค์˜คํ…Œ์ŠคํŠธ324'); //234
โ€‹
parseFloat('234์˜ค์˜ค์˜คํ…Œ์ŠคํŠธ324'); // 234
parseFloat('234.23423์˜ค์˜ค์˜คํ…Œ์ŠคํŠธ324'); // 234.23423

์ฐธ๊ณ ๋กœ Nan์„ typeof๋กœ ์ฒดํฌํ•ด๋ณด๋ฉด ์ˆซ์ž๋ผ๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

 

3. ๋นผ๊ธฐ(-) ์—ฐ์‚ฐ์ž

1 + '0' ์ฒ˜๋Ÿผ ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ํ›„, ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๋Š”๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์ด ๋‹ค ์•„๋Š” ์‚ฌ์‹ค์ผ ๊ฒ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๋นผ๊ธฐ ์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ ๋ฐ”๋€ ํ›„ ์—ฐ์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด์— ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ Nan์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์œ„์—์„œ ๋งํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ๋ฌธ์ž์—ด์ด parseInt๋ณด๋‹ค๋Š” Number๊ฐ€ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

4. NaN๋ผ๋ฆฌ ๋น„๊ตํ•˜๊ธฐ

๊ฐ’ ์ค‘์—์„œ NaN์€ ๋น„๊ตํ•  ๋•Œ ๋…ํŠนํ•œ ์„ฑ์งˆ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ฐ”๋กœ NaN๋ผ๋ฆฌ ๋น„๊ตํ•  ๋•Œ false ๊ฐ’์„ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

> NaN == NaN;
< false

 

 

5. ๋ฌธ์ž์—ด ์ฝ”๋“œ ๋ณด๊ธฐ

charCodeAt()์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ์–ด๋–ค ์ฝ”๋“œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.'

> '&'.charCodeAt();
< 65286
> 'a'.charCodeAt();
< 97
> 'b'.charCodeAt();
< 98

 

 

6. ๋ฌธ์ž์™€ ์ˆซ์ž ๋น„๊ต

Javascript์—์„œ ๋ฌธ์ž์™€ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•  ๋•Œ, ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ ํ›„ ๋น„๊ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๋Š” NaN์ด ๋ฉ๋‹ˆ๋‹ค.

> '1' < 5
< true
> 'abc' < 5
< false

 

 

7. !!์—ฐ์‚ฐ์ž

!๊ฐ€ true๋ฅผ false๋กœ false๋ฅผ true๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ฐ์‚ฐ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— !!๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์ธ ์ฝ”๋“œ๊ฐ€ true์ธ์ง€ false์ธ์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

> !!false // false -> true -> false
< false
โ€‹
> !!'' // false(''์€ false) -> true -> false
< false
โ€‹
> !!0 // false(0์€ false) -> true -> false
< false
โ€‹
> !!NaN // false(NaN์€ false) -> true -> false
< false
โ€‹
> !!undefined // false(undefined์€ false) -> true -> false
< false
โ€‹
> !!null // false(null์€ false) -> true -> false
< false
โ€‹
> !!document.all // false(document.all์€ false, ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ) -> true -> false
false

์œ„์˜ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์ด true์ด๊ธฐ ๋•Œ๋ฌธ์— !!๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

8. typeof null

typeof null์€ ์›๋ž˜ null์ด ๋‚˜์™€์•ผ ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๊ฐ’์€ object๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด ํ˜„์ƒ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์œ ๋ช…ํ•œ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ์–ธ์–ด๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ์ดˆ์ฐฝ๊ธฐ์— object๊ฐ€ ๋˜์—ˆ๋Š”๋ฐ, ๊ธฐ์กด์— typeof null์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๊ณณ์— ์˜ํ–ฅ์„ ๋ผ์น˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋ฅผ ๋ณด๊ณ  ์ดˆ๋ฐ˜ ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

9. let let = '1' ์„ ์–ธํ–ˆ์„ ๋•Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค๋ฅธ ์ด์œ 

var var = 3; ์ฒ˜๋Ÿผ ์˜ˆ์•ฝ์–ด๋ฅผ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, Unexpected token 'var'๋ผ๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ let let = '1'๋กœ ์„ ์–ธํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด let is disallowed as a lexically bound name๋ผ๋Š” ์—๋Ÿฌ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ES2015 ํ‘œ์ค€ ์ด์ „์—๋Š” let ์„ ์–ธ์ด ์—†์—ˆ์œผ๋ฏ€๋กœ let์„ ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ์ด๋ฆ„ ํ—ˆ์šฉ์„ ์ค‘์ง€ํ•˜๋„๋ก ์–ธ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด let์ด ์™„๋ฒฝํ•œ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด์—ˆ๋˜ ES2015 ์ด์ „์— ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (1995๋…„๋ถ€ํ„ฐ 2015๋…„๊นŒ์ง€ 20๋…„ ๋™์•ˆ!)

let์€ ES2015์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋Š์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— let์„ ์‚ฌ์šฉํ•  ๋•Œ, let์„ ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์ž ์žฌ์ ์ธ ๊ตฌ๋ฌธ ํ˜ผ๋ž€์˜ ์›์ธ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋•Œ๋ฌธ์— ES2015์ „์— ์‚ฌ์šฉํ–ˆ๋˜ var๋ฅผ var let = 3; ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ๋ฒ•์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

10. ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’์ด undefined๊ฐ€ ์•„๋‹ˆ๋‹ค?!

> let test = 1; // ์ฒ˜์Œ test๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ๋Š” undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ
< undefined
> test = 2; // ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค๋ฉด, ๋ฐ”๊พผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
< 2

 

 

11. ๋นˆ ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋Š” null์„ ์‚ฌ์šฉํ•˜์ž!

undefined๋Š” ๋นˆ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๋ณ€์ˆ˜์— ๋นˆ ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋Š” null์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ์˜๋„์ ์œผ๋กœ null์„ ๋„ฃ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ, undefined๋ฅผ ๋„ฃ์—ˆ๋‹ค๋ฉด, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋‚˜ ๋‚ด๊ฐ€ ์ถ”ํ›„์— ๋‹ค์‹œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•  ๋•Œ, ๊ธฐ๋ณธ๊ฐ’์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ƒ์˜ํ•˜์ง€ ์•Š๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

 

12. ํ•จ์ˆ˜์— ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

  1. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ(function declaration statement) : function์˜ˆ์•ฝ์–ด ๋‹ค์Œ์— ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ• โžก๏ธ function a() {}
  2. ํ•จ์ˆ˜ ํ‘œํ˜„์‹(function expression) : ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ• โžก๏ธconst a = function() {}
  3. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜(์ต๋ช… ํ•จ์ˆ˜) : ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•(ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ๋ฐฉ์‹๋งŒ ๊ฐ€๋Šฅ) โžก๏ธ const a = () => {}

 

 

13. ํ•จ์ˆ˜์˜ parameter์™€ argument

๊ฐ€๋” parameter์™€ argument๋ฅผ ํ—ท๊ฐˆ๋ฆฌ๊ณค ํ•˜๋Š”๋ฐ, ์ •ํ™•ํžˆ ์ •์˜ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • parameter : ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋ฐ›๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜
  • argument : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋„ฃ์–ด์ฃผ๋Š” ์ธ์ˆ˜

๋งŒ์•ฝ ํ•จ์ˆ˜์˜ parameter(๋งค๊ฐœ๋ณ€์ˆ˜)์™€ argument(์ธ์ˆ˜)๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ง์ง€์–ด์ง€์ง€ ์•Š์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” undefined๊ฐ€ ๋˜๊ณ  ์ง์ง€์–ด์ง€์ง€ ์•Š์€ ์ธ์ˆ˜๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

 

 

14. ๊ฐ์ฒด ์†์„ฑ์˜ ์ ‘๊ทผ๋ฐฉ๋ฒ•

const obj = {
    bc : 'hello',
    ab : 'hi',
    dc : 'world',
    // ์•„๋ž˜๋Š” ํŠน์ˆ˜ํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์†์„ฑ(๋ฌธ์ž์—ด๋กœ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•จ)
    '2bc' : 'unique',
    'a b' : 'space',
}

์œ„์™€ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๋•Œ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์˜จ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ• โžก๏ธ obj.bc
  2. ๋Œ€๊ด„ํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•(์ด ๋•Œ, ์†์„ฑ๋ช…์„ ๋ฌธ์ž์—ด๋กœ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์œ ์˜) โžก๏ธ obj['bc']

์ด๋ ‡๊ฒŒ ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋Š” ์ด์œ ๋Š” '2bc', 'a b'์™€ ๊ฐ™์€ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์†์„ฑ๋ช… ์•ž์— ์ˆซ์ž๊ฐ€ ์˜ค๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” obj.2bc ์ฒ˜๋Ÿผ ์˜จ์ ์œผ๋กœ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ด„ํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

15. ๋ฐฐ์—ด๊ณผ ํ•จ์ˆ˜๋„ ๊ฐ์ฒด๋‹ค?!

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด๊ณผ ํ•จ์ˆ˜๋„ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์™€ ๊ฐ™์ด ์†์„ฑ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function hello() {}
hello.a = 'really?';
โ€‹
const array = [];
array.b = 'wow';
โ€‹
console.log(hello.a);
console.log(array.b);

์ฆ‰, ๋ฐฐ์—ด๊ณผ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์—ด๊ณผ ํ•จ์ˆ˜๋ชจ์–‘์œผ๋กœ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๋ชฉ์ ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

 

16. call(), apply(), bind()

call, apply, bind๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

17. ๋ฌธ์ž์—ด์˜ split ๊ตฌ๋ถ„์ž๋ฅผ ๋ฐฐ์—ด์— ํฌํ•จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

๋ฌธ์ž์—ด์˜ ํŠน์ • ๊ตฌ๋ถ„์ž๋กœ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ถ„๋ฆฌํ•  ๋•Œ, split์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ, ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌ๋ถ„์ž๋ฅผ ๋ฐฐ์—ด์— ํฌํ•จํ•˜์—ฌ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const content = 'ํ•ด์‹œํƒœ๊ทธ๋ฅผ ๋ฝ‘์•„ ๋ด…์‹œ๋‹ค. #ํ•ด์‹œํƒœ๊ทธ #ํ…Œ์ŠคํŠธ#๋ถ™์–ด์žˆ๋Š”ํ•ด์‹œ';
const result = content.split(/(#[^ #]+)/); // ๋ฐฐ์—ด์— ํฌํ•จ์‹œํ‚ฌ ์ •๊ทœํ‘œํ˜„์‹์„ ๊ด„ํ˜ธ()๋กœ ๊ฐ์‹ธ์ค๋‹ˆ๋‹ค.

// ['ํ•ด์‹œํƒœ๊ทธ๋ฅผ ๋ฝ‘์•„ ๋ด…์‹œ๋‹ค. ', '#ํ•ด์‹œํƒœ๊ทธ', ' ', '#ํ…Œ์ŠคํŠธ', '', '#๋ถ™์–ด์žˆ๋Š”ํ•ด์‹œ', '']
console.log(result);

 

 

18. API ํ˜ธ์ถœ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์“ฐ๋กœํ‹€๋ง(throttling)๊ณผ ๋””๋ฐ”์šด์‹ฑ(debouncing)

์“ฐ๋กœํ‹€๋ง๊ณผ ๋””๋ฐ”์šด์Šค๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”๋‚˜ API ํ˜ธ์ถœ ์ œ์–ด๋ฅผ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.

  • ์“ฐ๋กœํ‹€๋ง : ๋งˆ์ง€๋ง‰ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ธฐ ์ „์— ๋‹ค์‹œ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • ๋””๋ฐ”์šด์‹ฑ : ์—ฐ์ด์–ด ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋“ค ์ค‘ ๋งˆ์ง€๋ง‰ ํ•จ์ˆ˜(๋˜๋Š” ์ œ์ผ ์ฒ˜์Œ)๋งŒ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

์“ฐ๋กœํ‹€๋ง, ๋””๋ฐ”์šด์‹ฑ์— ๊ด€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ๋Š” ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 


์ฐธ๊ณ  ๋งํฌ