๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ์ •์˜ / ์ฝ”๋“œ ์ž‘์„ฑ ๊ทœ์น™ / ์ž๋ฃŒํ˜• / ์—ฐ์‚ฐ์ž ๋ณธ๋ฌธ

full stack/JavaScript

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ์ •์˜ / ์ฝ”๋“œ ์ž‘์„ฑ ๊ทœ์น™ / ์ž๋ฃŒํ˜• / ์—ฐ์‚ฐ์ž

Shinjio 2023. 2. 14. 20:59
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) - 2023.2.14 ํ•™์Šต ๋‚ด์šฉ

์ฐธ๊ณ ์ž๋ฃŒ:

https://ko.javascript.info/

https://developer.mozilla.org/ko/docs/Web/JavaScript

 

JavaScript | MDN

JavaScript (JS)๋Š” ๊ฐ€๋ฒผ์šด, ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํ˜น์€ just-in-time ์ปดํŒŒ์ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ์ผ๊ธ‰ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์›น ํŽ˜์ด์ง€๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์ง€๋งŒ, Node.js, Apache CouchDB, Adobe Acrobat์ฒ˜๋Ÿผ

developer.mozilla.org

 

๋ชจ๋˜ JavaScript ํŠœํ† ๋ฆฌ์–ผ

 

ko.javascript.info

 

1. ์ •์˜

 

- HTML๊ณผ CSS์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ ์ธก ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

* HTML : ์›น ์ฝ˜ํ…์ธ ์˜ ๊ตฌ์กฐ๋ฅผ ์งœ๊ณ  ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋งˆํฌ์—… ์–ธ์–ด | ์–ด๋””๊ฐ€ ๋ฌธ๋‹จ์ด๊ณ , ํ—ค๋”ฉ์ธ์ง€, ํ‘œ์ธ์ง€ ๋“ฑ ์ •์˜
* CSS : HTML ์ฝ˜ํ…์ธ ์— ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํƒ€์ผ ๊ทœ์น™ ์–ธ์–ด | ๋ฐฐ๊ฒฝ์ƒ‰ ์ถ”๊ฐ€, ๊ธ€๊ผด ๋ณ€๊ฒฝ, ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜ ๋“ฑ
* JavaScript :  ๋™์ ์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐ”๊พธ๊ณ , ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด๋ฅผ ์ œ์–ดํ•˜๊ณ , ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋“ฑ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด

- ์›นํŽ˜์ด์ง€์—์„œ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด 

JavaScript์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค(API)๊ฐ€ ํŠนํžˆ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ
API๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ 
๋ธŒ๋ผ์šฐ์ € API์™€ ์„œ๋“œํŒŒํ‹ฐ API๋กœ ๊ตฌ๋ถ„๋จ
1) ๋ธŒ๋ผ์šฐ์ € API : ์›น๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋จ API๋กœ DOM, Geolocation API, Canvas, WebGL API ๋“ฑ์ด ์žˆ์Œ 
2) ์„œ๋“œํŒŒํ‹ฐ API : ๋ธŒ๋ผ์šฐ์ €์— ํƒ‘์žฌ๋˜์ง€ ์•Š์€ API๋กœ Twitter API, Google ์ง€๋„ API, OpenStreetMap API ๋“ฑ์ด ์žˆ์Œ

- '์›นํŽ˜์ด์ง€์— ์ƒ๋™๊ฐ์„ ๋ถˆ์–ด๋„ฃ๊ธฐ ์œ„ํ•ด' ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด 

- ์›๋ž˜๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์“ธ ๋ชฉ์ ์œผ๋กœ ๊ณ ์•ˆ๋œ ์–ธ์–ด์ด์ง€๋งŒ ํ˜„์žฌ๋Š” ์•ฑ ๊ฐœ๋ฐœ, ๋ธ”๋ก์ฒด์ธ, VR/AR ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์“ฐ์ž„

- C, C++, ์ž๋ฐ”์™€ ๊ฐ™์€ ์ „ํ†ต์ ์ธ ์–ธ์–ด์— ๋น„ํ•ด ๋ฌธ๋ฒ•์ด ์‰ฝ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์„ '์Šคํฌ๋ฆฝํŠธ(script)๋ผ ํ•จ

- ์›นํŽ˜์ด์ง€์˜ HTML ์•ˆ์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์›นํŽ˜์ด์ง€๋ฅผ ๋ถˆ์–ด์˜ฌ ๋•Œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰

- ๋ธŒ๋ผ์šฐ์ €๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„(JavaScript engine)์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ํŠน๋ณ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ๋””๋ฐ”์ด์Šค์—์„œ๋„ ๋™์ž‘ ๊ฐ€๋Šฅ

  โ†’ ๋ธŒ๋ผ์šฐ์ €์—๋Š” '์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ƒ ๋จธ์‹ '์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์—”์ง„์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Œ

  โ†’ ์—”์ง„์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์–‘ํ•œ๋ฐ, ์—”์ง„๋งˆ๋‹ค ํŠน์œ ์˜ ์ฝ”๋“œ๋„ค์ž„์ด ์žˆ์Œ

  โ†’ ์ฝ”๋“œ๋„ค์ž„์€ ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธ€์—์„œ ์ข…์ข… ์–ธ๊ธ‰๋˜๋ฏ€๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์Œ

  โ†’ (์˜ˆ) "X๋ผ๋Š” ๊ธฐ๋Šฅ์€ V8์—์„œ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ํ•˜๋ฉด Chrome๊ณผ Opera์—์„œ๋งŒ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋จ

  โ†’ V8 - Chrome, Opera / SpiderMonkey - Firefox / ChakraCore - Microsoft Edge / SquirrelFish - Safari ๋“ฑ

  โ†’ ์—”์ง„ ๋™์ž‘ ๊ณผ์ •

       ์—”์ง„์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฝ์Œ(ํŒŒ์‹ฑ)

      โ–ถ ์ฝ์–ด๋“ค์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ์ „ํ™˜(์ปดํŒŒ์ผ)

      โ–ถ ๊ธฐ๊ณ„์–ด๋กœ ์ „ํ™˜๋œ ์ฝ”๋“œ ์‹คํ–‰. ๊ธฐ๊ณ„์–ด๋กœ ์ „ํ™˜๋˜์–ด ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฆ„

 

โ€ข ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ

- ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” '์•ˆ์ „ํ•œ' ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

- ๋ฉ”๋ชจ๋ฆฌ๋‚˜ CPU ๊ฐ™์€ ์ €์ˆ˜์ค€ ์˜์—ญ์˜ ์กฐ์ž‘์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ

   WHY? ์• ์ดˆ์— ์ด๋Ÿฌํ•œ ์ ‘๊ทผ์ด ํ•„์š”์น˜ ์•Š์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋งŒ๋“  ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋Šฅ๋ ฅ์€ ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฐ›์Œ

  โ†’ Node.js ํ™˜๊ฒฝ์—์„œ๋Š” ์ž„์˜์˜ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ณ , ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ง€์›

  โ†’ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„  ์›นํŽ˜์ด์ง€ ์กฐ์ž‘, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์ƒํ˜ธ์ž‘์šฉ์— ๊ด€ํ•œ ๋ชจ๋“  ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Œ

 

       * ํŽ˜์ด์ง€์— ์ƒˆ๋กœ์šด HTML์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด HTML, ํ˜น์€ ์Šคํƒ€์ผ ์ˆ˜์ •ํ•˜๊ธฐ

       * ๋งˆ์šฐ์Šค ํด๋ฆญ์ด๋‚˜ ํฌ์ธํ„ฐ์˜ ์›€์ง์ž„, ๊ธฐ๋ณด๋“œ ํ‚ค ๋ˆŒ๋ฆผ ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ํ–‰๋™์— ๋ฐ˜์‘ํ•˜๊ธฐ

       * ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜, ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ, ์—…๋กœ๋“œํ•˜๊ธฐ

       * ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์„ค์ •ํ•˜๊ธฐ. ์‚ฌ์šฉ์ž์—๊ฒŒ ์งˆ๋ฌธ์„ ๊ฑด๋„ค๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ

       * ํด๋ผ์ด์–ธํŠธ ์ธก์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ(๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€)

 

โ€ข ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•  ์ˆ˜ ์—†๋Š” ์ผ

- ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋Šฅ์— ์ œ์•ฝ์„ ๊ฑธ์–ด๋‘์—ˆ์Œ

- ์ด๋Ÿฌํ•œ ์ œ์•ฝ์€ ์•…์„ฑ ์›นํŽ˜์ด์ง€๊ฐ€ ๊ฐœ์ธ์ •๋ณด์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์†์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง

  โ†’ ์›นํŽ˜์ด์ง€ ๋‚ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋””์Šคํฌ์— ์ €์žฅ๋œ ์ž„์˜์˜ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ณ , ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ๋•Œ ์ œ์•ฝ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.

  โ†’ ์šด์˜์ฒด์ œ๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง์ ‘ ์“ฐ์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰ํ˜€์žˆ๊ธฐ ๋•Œ๋ฌธ

  โ†’ ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ์ˆœ ์žˆ์Œ. ํ•˜์ง€๋งŒ ์ ‘๊ทผ์€ ์ œํ•œ๋จ

  โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์ฐฝ์— ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธํ•˜๊ฑฐ๋‚˜ inputํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์„ ํƒํ•˜๋Š” ๋“ฑ ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ํŒŒ์ผ ์ ‘๊ทผ ํ—ˆ์šฉ

  โ†’ ์นด๋ฉ”๋ผ๋‚˜ ๋งˆ์ดํฌ ๊ฐ™์€ ๋””๋ฐ”์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ช…์‹œ์ ์ธ ํ—ˆ๊ฐ€ ํ•„์š”

- ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(Same Origin Policy)

  ๋ธŒ๋ผ์šฐ์ € ๋‚ด ํƒญ๊ณผ ์ฐฝ์€ ๋Œ€๊ฐœ ์„œ๋กœ์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ.

  ๊ทธ๋Ÿฐ๋ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ ์ฐฝ์—์„œ ๋‹ค๋ฅธ ์ฐฝ์„ ์—ด ๋•Œ๋Š” ์˜ˆ์™ธ๊ฐ€ ์ ์šฉ๋จ.

  ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ์—๋„ ๋„๋ฉ”์ธ์ด๋‚˜ ํ”„๋กœํ† ์ฝœ, ํฌํŠธ๊ฐ€ ๋‹ค๋ฅด๋ฉด ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ 

  ์ด ์ •์ฑ…์„ ํ”ผํ•˜๋ ค๋ฉด ๋‘ ํŽ˜์ด์ง€๋Š” ๋ฐ์ดํ„ฐ ๊ตํ™˜์— ๋™์˜ํ•ด์•ผ ํ•˜๊ณ ,

  ๋™์˜์™€ ๊ด€๋ จ๋œ ํŠน์ˆ˜ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ ์„œ๋ฒ„์™€ ์‰ฝ๊ฒŒ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

  ํ•˜์ง€๋งŒ ํƒ€ ์‚ฌ์ดํŠธ๋‚˜ ๋„๋ฉ”์ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ

  ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๋ช…ํ™•ํžˆ ์Šน์ธ์„ ํ•ด์ค˜์•ผ ํ•จ(HTTP ํ—ค๋” ๋“ฑ์„ ์ด์šฉ)

 

โ€ข ๊ฐ•์ 

- HTML/CSS์™€ ์™„์ „ํžˆ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Œ

- ๊ฐ„๋‹จํ•œ ์ผ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

- ๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜๊ณ , ๊ธฐ๋ณธ ์–ธ์–ด๋กœ ์‚ฌ์šฉ๋จ

 

์œ„์˜ ์„ธ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์—ฐ๊ด€ ๊ธฐ์ˆ ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ–์— ์—†์Œ

์ด๋Ÿฐ ์ด์œ ๋กœ ๋ธŒ๋ผ์šฐ์ € ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Œ

์ด ์™ธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„๋‚˜ ๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ

 

โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผ(transpile, ๋ณ€ํ™˜)ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์–ธ์–ด๋“ค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด์™ธ์˜ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ '๋ณด์ด์ง€ ์•Š๋Š” ๊ณณ์—์„œ' ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž๋™ ๋ณ€ํ™˜

 

- CoffeeScript

  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์œ„ํ•œ 'syntatic sugar'

  ์งง์€ ๋ฌธ๋ฒ•์„ ๋„์ž…ํ•˜์—ฌ ๋ช…๋ฃŒํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

  Ruby ๊ฐœ๋ฐœ์ž๋“ค์ด ์ข‹์•„ํ•จ

 

- TypeScript

  ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ '์ž๋ฃŒํ˜•์˜ ๋ช…์‹œํ™”(strict data typing)์— ์ง‘์ค‘ํ•ด ๋งŒ๋“  ์–ธ์–ด

  Microsoft ๊ฐœ๋ฐœ

 

- Flow

  ์ž๋ฃŒํ˜•์„ ๊ฐ•์ œํ•˜๋Š”๋ฐ TypeScript์™€๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์‚ฌ์šฉ

  Facebook ๊ฐœ๋ฐœ

 

- Dart

  ๋ชจ๋ฐ”์ผ์•ฑ๊ณผ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ณ ์œ ์˜ ์—”์ง„์„ ๊ฐ€์ง„ ๋…์ž์  ์–ธ์–ด

  Google ๊ฐœ๋ฐœ

 

์ด์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์–ธ์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐœ๋ฐœ ์–ธ์–ด๋กœ ์ด๋Ÿฌํ•œ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋ฅผ ํƒํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ž์‹ ์ด ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด ๊ฒฐ๊ตญ์—” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์•Œ์•„์•ผ ํ•จ

 

โ€ข ์ฝ”๋“œ ์—๋””ํ„ฐ(code editor)

ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ(IDE)๊ณผ ๊ฒฝ๋Ÿ‰ ์—๋””ํ„ฐ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํƒํ•ด ์ž‘์—…

 

ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ(Intergrated Development Enviroment, IDE)

- ๊ฐ•๋ ฅํ•œ ์—๋””ํ„ฐ๋กœ 'ํ”„๋กœ์ ํŠธ ์ „์ฒด'๋ฅผ ๊ด€์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

- IDE๋ฅผ ์ด์šฉํ•˜๋ฉด ์ˆ˜๋งŽ์€ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ํŒŒ์ผ ๊ฐ„์˜ ํƒ์ƒ‰ ์ž‘์—…์ด ์ˆ˜์›”ํ•ด์ง

- ๋‹จ์ˆœํžˆ ์—ด๋ ค์žˆ๋Š” ํŒŒ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด ํ”„๋กœ์ ํŠธ์— ๊ธฐ๋ฐ˜ํ•œ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ 

- git๊ณผ ๊ฐ™์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ, ํ…Œ์ŠคํŒ… ํ™˜๊ฒฝ ๋“ฑ 'ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€'์˜ ์ž‘์—…๋„ ํ•  ์ˆ˜ ์žˆ์Œ

- Visual Studio Code, WebStorm

 

๊ฒฝ๋Ÿ‰ ์—๋””ํ„ฐ(lightweight editor)

- IDE๋งŒํผ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง„ ์•Š์ง€๋งŒ, ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๋‹จ์ˆœํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ

- ํŒŒ์ผ์„ ์—ด๊ณ  ๋ฐ”๋กœ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ (ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ์ˆ˜์ •ํ•  ๋•Œ)

- ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ ˆ๋ฒจ ๋ฌธ๋ฒ• ๋ถ„์„๊ธฐ, ์ž๋™์™„์„ฑ๊ธฐ๋Šฅ ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›

- Atom, Visual Studio Code, Sublime Text, Notepad++, Vim, Emacs ๋“ฑ

 

โ€ข ๊ฐœ๋ฐœ์ž ์ฝ˜์†” 

- ๋ธŒ๋ผ์šฐ์ €์—๋Š” '๊ฐœ๋ฐœ์ž ๋„๊ตฌ' ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Œ. ์ด ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—๋Ÿฌ ํ™•์ธ ๊ฐ€๋Šฅ

- ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” Chrome์ด๋‚˜ Firefox๋ฅผ ์ด์šฉํ•ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธ

- ๋‘ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ํ›Œ๋ฅญํ•˜๊ธฐ ๋•Œ๋ฌธ

- ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ๋ณด๋Š” ๋ฒ• : F12 (mac์˜ ๊ฒฝ์šฐ cmd + opt + J)

 

 

 - ๋นจ๊ฐ„์ƒ‰ ๊ธ€์”จ

   ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

 

 - ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์šฐ์ธก ๋งํฌ

    VM0000 โ†’ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ํŒŒ์ผ

   ์ˆซ์ž โ†’ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ค„

 

 - ์ปค๋งจ๋“œ ๋ผ์ธ (> ๊ธฐํ˜ธ)

   ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ช…๋ น์–ด(command)๋ฅผ ์ž…๋ ฅ

   ์ปค๋งจ๋“œ ๋ผ์ธ์— ๋ช…๋ น์–ด ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ๋ช…๋ น์–ด ์‹คํ–‰
   ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด shift + Enter

 

โ€ข ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ

Uncaught ReferenceError : _____ is not defined

(ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ) ์บก์ณ๋˜์ง€ ์•Š์€ ์ฐธ๊ณ ์˜ค๋ฅ˜ : _____๊ฐ€ <์ต๋ช…>:1:1์— ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค

 

ํฌ๋กฌ์—์„œ ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ scope ๋ฐ–์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ

 

console ์˜คํƒ€

 

Uncaught TypeError: _____ is not a function

(ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ) ์บก์ณ๋˜์ง€ ์•Š์€ ํƒ€์ž…์—๋Ÿฌ : _____๋Š” <์ต๋ช…>:1:9์—์„œ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค

 

ํฌ๋กฌ์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ โ†’ ํ•จ์ˆ˜ ์˜คํƒ€ ํ™•์ธ

ํ•จ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ. ํ•จ์ˆ˜๋ช…์ด ํƒœ๊ทธ ID, name ๋“ฑ๊ณผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜ ๋‚ด์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ

 

. ๋’ท๋ถ€๋ถ„ log ์˜คํƒ€

 

Uncaught SyntaxError: missing _ after argument list

(ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ) ์บก์ณ๋˜์ง€ ์•Š์€ ๊ตฌ๋ฌธ์˜ค๋ฅ˜ : ์ธ์ˆ˜ ๋ชฉ๋ก ๋’ค์— _ ๋ˆ„๋ฝ

 

ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ. ์˜คํƒ€, ์—ฐ์‚ฐ์ž ๋ˆ„๋ฝ ๋˜๋Š” ์ด์Šค์ผ€์ดํ”„๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด์ผ ์ˆ˜ ์žˆ์Œ

๊ด„ํ˜ธ ํ™•์ธ

 

) ๋ˆ„๋ฝ

 

์•Œ์•„๋‘๋ฉด ์ข‹์€ ์˜์–ด

( ) : parentheses
{} braces
[] brackets

 

Uncaught SyntaxError: Invalid or unexpected token

(ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ) ์บก์ณ๋˜์ง€ ์•Š์€ ๊ตฌ๋ฌธ์˜ค๋ฅ˜: ์ž˜๋ชป๋œ ํ† ํฐ ๋˜๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ํ† ํฐ

 

์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ผ์ธ์— ์˜คํƒ€๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ. ํ˜น์€ ์Œ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌธ์ž์—ด ๊ฐ์‹ธ์ฃผ๊ธฐ, ์ฝค๋งˆ(,)์œ„์น˜, ์†Œ๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ ๋“ฑ ๊ด„ํ˜ธ ์—ด๋ฆผ, ๋‹ซํž˜ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์—†๋Š”์ง€ ํ™•์ธ

 

 

JavaScript ์—๋Ÿฌ TOP 10 (์ถœ์ฒ˜ : https://blog.meeta.io/10) โ†’ ์•„์ง ๋‚ด๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ X. ํ•„์š”์‹œ ์ฐธ๊ณ 

1. Uncaught TypeError: Cannot read property 

    ํฌ๋กฌ์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ์ฒด์˜ property๋ฅผ ์ฝ์–ด๋‚ด๊ฑฐ๋‚˜ method๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ

2. TypeError: 'undefined' is not an object (evaluating

    1๋ฒˆ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ์ด์ง€๋งŒ safari์—์„œ๋Š” ์œ„์™€ ๊ฐ™์ด ๋„์›€

3. TypeError: null is not an object (evaluating 

    safari์—์„œ null์˜ property๋ฅผ ์ฝ์–ด๋‚ด๊ฑฐ๋‚˜ method๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ

4. (unknown): Script error 

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ uncaught error๊ฐ€ cross-origin policy๋ฅผ ์–ด๊ธฐ๋ฉฐ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ๋ถ€ํ„ฐ ๋„˜์–ด์˜ค๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

5. TypeError: Object doesn't support property

     IE์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ method๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ

6. Uncaught TypeError : ____ is not a function

     ํฌ๋กฌ์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ

7. Uncaught RangeError: Maximum call stack size exceeded

    ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ํ˜น์€ ํ•จ์ˆ˜์— ๋ฒ”์œ„ ์ด์ƒ์˜ ๊ฐ’์ด ์ž…๋ ฅ ๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒ

8. Uncaught TypeError: Cannot read property length of undefined

    ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์˜ length property์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

9. Uncaught TypeError: Cannot set property ____ of undefined

    ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ ํ•ญ์ƒ 'undefined'๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ ,

    undefined ๋ณ€์ˆ˜์˜ ์–ด๋–ค property๋„ ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์—†์Œ

10. Uncaught ReferenceError: ___ is not defined

    ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ scope ๋ฐ–์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ

 

2. ์ฝ”๋“œ ์ž‘์„ฑ ๊ทœ์น™

 

โ€ข ; (์„ธ๋ฏธ์ฝœ๋ก )

๋งˆ์นจํ‘œ์˜ ์—ญํ• ๋กœ ์–ด๋””๊นŒ์ง€๊ฐ€ ํ•˜๋‚˜์˜ ๋ช…๋ น์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

ํ•˜๋‚˜์˜ ๋ช…๋ น์ด ๋๋‚  ๋•Œ ๋ถ™์ด๊ธฐ 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ค„๋ฐ”๊ฟˆ์ด ์žˆ์œผ๋ฉด ์ด๋ฅผ '์•”์‹œ์ ' ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ํ•ด์„

์ด๋Ÿฌํ•œ ๋™์ž‘ ๋ฐฉ์‹์„ ์„ธ๋ฏธ์ฝœ๋ก  ์ž๋™ ์‚ฝ์ž…(automatic semicolon insertion)์ด๋ผ ํ•˜๋Š”๋ฐ ํ•ญ์ƒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

๋”ฐ๋ผ์„œ ; ๋ฅผ ์•ˆ๋ถ™์—ฌ๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง„ ์•Š์ง€๋งŒ, ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ

 

; ๋ฏธ์ž‘์„ฑ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์˜ˆ

 

[] ์•ž์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ์•Š์Œ. ๋”ฐ๋ผ์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

; ์ž˜ ์ž‘์„ฑํ–ˆ์„ ๋•Œ
; ๋ฏธ์ž‘์„ฑ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์˜ˆ

 

โ€ป ์„ธ๋ฏธ์ฝœ๋ก ์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•จ

 

โ€ข ์ฃผ์„(comment)

ํ•œ ์ค„ ์งœ๋ฆฌ ์ฃผ์„ : // 

์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ /* */

 

๋‹จ์ถ•ํ‚ค : ๋ธ”๋ก ์ง€์ • ํ›„ Ctrl + /

 

์ปดํ“จํ„ฐ๋Š” ์ฝ”๋“œ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•จ

โ†’ ์–ด๋– ํ•œ ์˜๋„๋กœ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ ๋˜์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•  ๋•Œ, ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ๊ธฐ๋กํ•  ๋•Œ ๋“ฑ

    ์ฝ”๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ๋•Œ ์‚ฌ์šฉ (ํ˜‘์—…, ์ˆ˜์ •์‹œ ์œ ์šฉํ•จ)

โ†’ ์“ฐ์ด์ง€ ์•Š๋Š” ์ฝ”๋“œ๋“ค๋„ ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋„ ํ•จ

 

ํ•œ ์ค„ ์ฃผ์„ ์‚ฌ์šฉ ์˜ˆ

 

์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ ์‚ฌ์šฉ ์˜ˆ

 

โ€ข ๋“ค์—ฌ์“ฐ๊ธฐ

์•ˆํ•ด๋„ ๋˜์ง€๋งŒ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ , ๋ณด๊ธฐ์— ์ข‹์Œ

 

3. ์ž๋ฃŒํ˜•

๊ฐ’(value) : ํ”„๋กœ๊ทธ๋žจ์ด ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ

์ž๋ฃŒํ˜•(data type) : ๊ฐ’์˜ ์ข…๋ฅ˜ (ex. ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๊ฐ’)

 

โ€ข ์ˆซ์ž(Number)

์ •์ˆ˜(Integer) : 0๋ณด๋‹ค ์ž‘์€ ์Œ์˜ ์ •์ˆ˜, 0, 0๋ณด๋‹ค ํฐ ์Œ์˜ ์ •์ˆ˜

์†Œ์ˆ˜(floating point) : ์†Œ์ˆ˜์ ์„ ๊ฐ–๋Š” ํ˜•ํƒœ

๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์น™์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅ 

 

โ†“ ํŠน์ˆ˜ ์ˆซ์ž ๊ฐ’(special numeric value)

NaN : not a number ์ด์ง€๋งŒ ์ˆซ์žํ˜•์œผ๋กœ ๋ถ„๋ฅ˜

           ๊ณ„์‚ฐ ์ค‘์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด์ฃผ๋Š” ๊ฐ’์œผ๋กœ ๋ถ€์ •ํ™•ํ•˜๊ฑฐ๋‚˜ ์ •์˜๋˜์ง€ ์•Š์€ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐœ์ƒ

Infinity : ๋ฌดํ•œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์žํ˜•

 

 

 

parseInt : ๋ฌธ์ž์—ด์„ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ณ€ํ™˜
parseFloat : ๋ฌธ์ž์—ด์„ ์†Œ์ˆ˜ํ˜•์œผ๋กœ ๋ณ€ํ™˜
Number : ๋ฌธ์ž์—ด์„ ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜
๋‹จ, Number์— '3์›”', '1์ผ'๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ๋“ค์–ด๊ฐˆ ๊ฒฝ์šฐ์—๋Š” NaN์œผ๋กœ ์ถœ๋ ฅ๋˜๋‚˜,
parseInt๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ 3,1 ๊ณผ ๊ฐ™์ด ์ˆซ์ž๋กœ ์ถœ๋ ฅ๋จ

 

โ€ข ๋ฌธ์ž์—ด(String)

์‹œ์ž‘๊ณผ ๋์ด ์ž‘์Œ๋”ฐ์˜ดํ‘œ(' ')๋กœ ๊ฐ์‹ธ์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ

ํฐ๋”ฐ์˜ดํ‘œ(" "), ๋ฐฑํ‹ฑ(` `) ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

 

์–‘ ๋์˜ ๋”ฐ์˜ดํ‘œ ์ข…๋ฅ˜๋ฅผ ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ (' " ์‚ฌ์šฉ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ)

๋ฐฑํ‹ฑ์€ ์ค„๋ฐ”๊ฟˆ์„ ํ•  ์ˆ˜ ์žˆ์Œ. ๊ทธ ์™ธ ์ค„๋ฐ”๊ฟˆ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ \n ์‚ฌ์šฉ

๋ฐฑํ‹ฑ์œผ๋กœ ๋ณ€์ˆ˜๋‚˜ ํ‘œํ˜„์‹์„ ๊ฐ์‹ผ ํ›„ ${...}์•ˆ์— ๋„ฃ์–ด์ฃผ๋ฉด, ์›ํ•˜๋Š” ๋ณ€์ˆ˜๋‚˜ ํ‘œํ˜„์‹์„ ๋ฌธ์ž์—ด ์ค‘๊ฐ„์— ์†์‰ฝ๊ฒŒ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

 

ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด (templete strings)
``(๋ฐฑํ‹ฑ) ์•ˆ์— ${๋ณ€์ˆ˜}์™€ ${ํ•จ์ˆ˜}๋ฅผ ๋„ฃ์–ด ์‰ฝ๊ฒŒ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

 

ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด ์‚ฌ์šฉ ์˜ˆ

 

ํฐ๋”ฐ์˜ดํ‘œ๋‚˜ ์ž‘์Œ๋”ฐ์˜ดํ‘œ๋Š” ์ค‘๊ฐ„์— ํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์—†์Œ

'' ์•ˆ์— ' ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ \ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฐ”๊นฅ์— "" ์‚ฌ์šฉ

+ ๊ธฐํ˜ธ ํ†ตํ•ด ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•จ

 

๋ฌธ์ž์—ด ์ž‘์„ฑ ์˜ˆ

 

โ€ข ๋ถˆ๋ฆฐ(Boolean)

true ์ฐธ

false ๊ฑฐ์ง“

 

โ€ข undefined

๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ

๋ฐ˜ํ™˜ํ•  ๊ฒฐ๊ณผ๊ฐ’์ด ์—†์„ ๋•Œ ๋‚˜์˜ด

 

โ€ข null

์˜๋„์ ์œผ๋กœ ๋นˆ ๊ฐ’์„ ๋„ฃ์„ ๋•Œ ์‚ฌ์šฉ

'์กด์žฌํ•˜์ง€ ์•Š๋Š”(nothing)' ๊ฐ’, '๋น„์–ด ์žˆ๋Š”(empty)' ๊ฐ’, '์•Œ ์ˆ˜ ์—†๋Š”(unknown)' ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉ

 

null ๋ฒ„๊ทธ

null์˜ ์ž๋ฃŒํ˜•์€ null 

์œ ๋ช…ํ•œ ๋ฒ„๊ทธ

 

4. ์—ฐ์‚ฐ์ž

 

์šฉ์–ด์ •๋ฆฌ

ํ”ผ์—ฐ์‚ฐ์ž(operand) : ์—ฐ์‚ฐ์ž๊ฐ€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์ƒ์œผ๋กœ ์ธ์ˆ˜(argument)๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ

๋‹จํ•ญ(unary) : ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ๋ฐ›๋Š” ์—ฐ์‚ฐ์ž

์ดํ•ญ(binary) : ๋‘ ๊ฐœ์˜ ํ”ผ ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ›๋Š” ์—ฐ์‚ฐ์ž

 

โ€ข ๋”ํ•˜๊ธฐ [ + ]

๋‘ ์ˆ˜๋ฅผ ํ•ฉ์น˜๊ฑฐ๋‚˜, ๋˜๋Š” ๋‘ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜๋กœ ๋ถ™์ผ ๋•Œ ์‚ฌ์šฉ

๋ฌธ์žํ˜• + ์ˆซ์ž ์ผ ๊ฒฝ์šฐ : ์ˆซ์ž๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๋€œ (ํ˜•๋ณ€ํ™˜ type casting)

'๋ฌธ์ž์—ด' + 0 > '๋ฌธ์ž์—ด0'

+ ์‚ฌ์šฉ ์˜ˆ

 

๋ฐ˜๋ฉด, ๋ฌธ์ž์—ด ์•ž์— + ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์ด๋ฉด ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜

+๋ฌธ์ž์—ด ์‚ฌ์šฉ ์˜ˆ

 

โ€ข ๋นผ๊ธฐ [ - ] / ๊ณฑํ•˜๊ธฐ [ * ] / ๋‚˜๋ˆ„๊ธฐ [ / ]

 

์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ์˜ˆ

 

์ปดํ“จํ„ฐ๋Š” ํŠน์ดํ•˜๊ฒŒ ๋ถ€๋™์†Œ์ˆ˜์  ๊ณ„์‚ฐ์€ ์–ด๋ ค์›Œํ•จ

WHY? ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์†Œ์ˆ˜์ ์€ ์ด์ง„์ˆ˜ ๋ณ€ํ™˜์ด ์–ด๋ ค์›€

๋”ฐ๋ผ์„œ ์†Œ์ˆ˜์  ๊ณ„์‚ฐํ•  ๋•Œ์—๋Š” 10์„ ๊ณฑํ•œ ํ›„ 10์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ณ„์‚ฐ

 

์†Œ์ˆ˜์  ๊ณ„์‚ฐ ์˜ˆ

 

- , *, / ๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค์ด ์ˆซ์ž๋กœ ๋ฐ”๋€œ

'๋ฌธ์ž์—ด' - 0 > NaN (์ˆซ์žํ˜•)

Number('๋ฌธ์ž์—ด') - 0 ์ด ์ ์šฉ๋˜์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ

NaN์€ ์–ด๋–ค ๊ฐ’๊ณผ ์—ฐ์‚ฐํ•ด๋„ NaN๊ฐ’์ด ๋‚˜์˜ด

 

 

โ€ข ๋‚˜๋จธ์ง€ [ % ]

 

โ€ข ๊ฑฐ๋“ญ์ œ๊ณฑ [ ** ]

 

โ€ข ํ• ๋‹น [ = ]

๊ฐ’์„ ์–ด๋–ค ๋ณ€์ˆ˜์— ํ• ๋‹น

 

๋ณตํ•ฉ ํ• ๋‹น ์—ฐ์‚ฐ์ž (compound assignment operators) : +=,   -=,   *=,   /=,   %=
์ฆ๊ฐ€(increment), ๊ฐ์†Œ(decrement) ์—ฐ์‚ฐ์ž : ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜ ๊ฐ์†Œ์‹œํ‚ฌ๋•Œ x++, x--

 

โ€ข ๋™๋“ฑ [ == ]  ์ผ์น˜ [ === ]

๋‘ ๊ฐ’์ด ์„œ๋กœ ๊ฐ™์€์ง€ ํ…Œ์ŠคํŠธํ•˜์—ฌ true/false ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜

 

== ๊ฐ’๋งŒ ๋น„๊ต (ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚จ)

=== ๊ฐ’, ์ž๋ฃŒํ˜•๊นŒ์ง€ ๋น„๊ต

 

โ€ข ๋ถ€์ • [ ! ] / ๋‹ค๋ฆ„ [ !==]

 

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

๊ทธ๋ฃนํ™” (  )
    โ†“
* ํ˜น์€ / 
    โ†“
+ ํ˜น์€  -

์ด์™ธ์— ๋” ๋งŽ์ง€๋งŒ ์™ธ์šธ ํ•„์š”๋Š” ์—†์Œ

 

NaN == NaN; NaN >= Nan; NaN <= NaN;

< false

 

NaN != Nan;

< true

 

true > false;

< true

์™œ? true๋Š” 1, false๋Š” 0

 

'b' > 'a';

< true

 

'ad' > 'ab';

< true

 

'3' < 5;  '3'์ด ์ˆซ์ž๋กœ ๋ณ€ํ™˜

< true

 

'abc' < 5; 'abc'๋Š” ์ˆซ์žํ˜• NaN์œผ๋กœ ๋ณ€ํ™˜. NaN๊ฐ’๊ณผ์˜ ๋น„๊ต๋Š” false

false

 

==๊ณผ&nbsp; ===์˜ ์ฐจ์ด
!= ๊ณผ !==์˜ ์ฐจ์ด
charCodeAt ์‚ฌ์šฉ ์˜ˆ

๋ฌธ์ž์˜ ๋ฒˆํ˜ธ ์•Œ์•„๋ณผ ๋•Œ ์‚ฌ์šฉ ; .charCodeAt()

 

โ€ข typeof

์ธ์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ๋ฐ˜ํ™˜

 

string ์‚ฌ์šฉ ์˜ˆ

 

typeof ์—ฐ์‚ฐ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์น™์—ฐ์‚ฐ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Œ

๋”ฐ๋ผ์„œ ()๋ฅผ ํ†ตํ•ด ์—ฐ์‚ฐ์„ ๋จผ์ € ์ˆ˜ํ–‰ ํ›„ typeof๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ

 

โ€ข ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

&& : and

|| : or

! : ๋ฐ˜๋Œ€๋กœ ์ „ํ™˜

!! : ๋ฐ˜๋Œ€ 2๋ฒˆ, Boolean์œผ๋กœ ํ˜•๋ณ€ํ™˜

 

false, ''(๋นˆ๋ฌธ์ž์—ด), 0, NaN, null, undefined์€ ๋ถˆ๊ฐ’์œผ๋กœ ํ˜• ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ false โ†’ ์™ธ์šฐ๊ธฐโ˜…

์œ„์˜ ๊ฐ’๋“ค์„ 'falsy๊ฐ’'์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ

 

!, !! ์‚ฌ์šฉ ์˜ˆ

 

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

์šฐ์„ ์ˆœ์œ„ ์—ฐ์‚ฐ์ž ์œ ํ˜• ๊ธฐํ˜ธ
21 ๊ทธ๋ฃน ( )
...    
17 ๋…ผ๋ฆฌ NOT !
17 typeof typeof
16 ๊ฑฐ๋“ญ์ œ๊ณฑ **
15 ๊ณฑ์…ˆ *
15 ๋‚˜๋ˆ—์…ˆ /
15 ๋‚˜๋จธ์ง€ %
14 ๋ง์…ˆ +
14 ๋บ„์…ˆ -
...    
12 ๋ฏธ๋งŒ <
12 ์ดํ•˜ <=
12 ์ดˆ๊ณผ >
12 ์ด์ƒ >=
11 ๋™๋“ฑ ==
11 ๋ถ€๋“ฑ !=
11 ์ผ์น˜ ===
11 ๋ถˆ์ผ์น˜ !==
...    
6 ๋…ผ๋ฆฌ AND &&
5 ๋…ผ๋ฆฌ OR ||
...    
3 ํ• ๋‹น =
๋ฐ˜์‘ํ˜•