μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- μλ°
- database
- λ§μΌλ΄κ°μΈμμλ€μμ°λ€λ©΄
- λ μ
- Python
- μ½λ©
- μ»΄ν¨ν°κ³Όν
- μΉνΌλΈλ¦¬μ±
- css
- JavaScript
- κΉλ―Έκ²½
- λ°μν
- νλ‘κ·Έλλ°
- μλ°μ€ν¬λ¦½νΈ
- κΉλ―Έκ²½μλ§νμμ
- μν
- μ±
- μΉνμ΄μ§λ§λ€κΈ°
- μ€λΌν΄
- ComputerScience
- νμ΄μ¬
- λ°μ΄ν°λ² μ΄μ€
- Kλ°°ν°λ¦¬
- μ₯νΈμμ€
- Kλ°°ν°λ¦¬λ 볼루μ
- Java
- λΌνλΌμ€μλ§λ
- κ°λ°
- κΉνλ¨
- html
- Today
- Total
JiYoung Dev π₯
[μλ°μ€ν¬λ¦½νΈ] μ μ / μ½λ μμ± κ·μΉ / μλ£ν / μ°μ°μ λ³Έλ¬Έ
[μλ°μ€ν¬λ¦½νΈ] μ μ / μ½λ μμ± κ·μΉ / μλ£ν / μ°μ°μ
Shinjio 2023. 2. 14. 20:59μλ°μ€ν¬λ¦½νΈ(JavaScript) - 2023.2.14 νμ΅ λ΄μ©
μ°Έκ³ μλ£:
https://developer.mozilla.org/ko/docs/Web/JavaScript
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 | ν λΉ | = |