์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์๋ฐ์คํฌ๋ฆฝํธ
- JavaScript
- ์นํผ๋ธ๋ฆฌ์ฑ
- css
- ์นดํ๋๊ฐ
- dmz๋คํธ์ํฌ
- ๋ ์
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- ์ ๋ฆฌํธ๋ฆฌํธ
- ๋๊ฐ
- database
- ์ํ
- ํ๋ก๊ทธ๋๋ฐ
- Python
- ์ฑ
- dmz๋
- ์ฝ๋ฉ
- ์๋ฐ
- ํ์ด์ฌ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- html
- ๊ฐ์์ ์
- ๋คํธ์ํฌdmz
- ๊ฐ๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Java
- ์ค๋ผํด
- ๋ฐฉํ๋ฒฝdmz
- ์ค๋ธ์
- dmz๊ตฌ์ฑ
- Today
- Total
JiYoung Dev ๐ฅ
[์๋ฐ์คํฌ๋ฆฝํธ] ์ ์ / ์ฝ๋ ์์ฑ ๊ท์น / ์๋ฃํ / ์ฐ์ฐ์ ๋ณธ๋ฌธ
[์๋ฐ์คํฌ๋ฆฝํธ] ์ ์ / ์ฝ๋ ์์ฑ ๊ท์น / ์๋ฃํ / ์ฐ์ฐ์
Shinjio 2023. 2. 14. 20:59์๋ฐ์คํฌ๋ฆฝํธ(JavaScript) - 2023.2.14 ํ์ต ๋ด์ฉ
์ฐธ๊ณ ์๋ฃ:
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 ๋ฐ์ ์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ์ ๋ ๋ฐ์

Uncaught TypeError: _____ is not a function
(ํ๊ตญ์ด ๋ฒ์ญ) ์บก์ณ๋์ง ์์ ํ์ ์๋ฌ : _____๋ <์ต๋ช >:1:9์์ ํจ์๊ฐ ์๋๋๋ค
ํฌ๋กฌ์์ ์ ์๋์ง ์์ ํจ์๋ฅผ ์ฌ์ฉํ์ ๋ ๋ฐ์ โ ํจ์ ์คํ ํ์ธ
ํจ์๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ. ํจ์๋ช ์ด ํ๊ทธ ID, name ๋ฑ๊ณผ ๋์ผํ๊ฑฐ๋ ํจ์ ๋ด์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ฝ๋๊ฐ ์์ ๊ฒฝ์ฐ

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
์ ๋ช ํ ๋ฒ๊ทธ
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



๋ฌธ์์ ๋ฒํธ ์์๋ณผ ๋ ์ฌ์ฉ ; .charCodeAt()
โข typeof
์ธ์์ ์๋ฃํ์ ๋ฐํ

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 | ํ ๋น | = |