πŸ“¦ Asabeneh / 30-Days-Of-JavaScript

πŸ“„ README.md Β· 638 lines
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638# μžλ°”μŠ€ν¬λ¦½νŠΈ 30일 정볡 😎

| # Day |                                                                  Topics                                                                  |
| ----- | :--------------------------------------------------------------------------------------------------------------------------------------: |
| 01    |                                                           [μ†Œκ°œ](./readMe.md)                                                            |
| 02    |                                            [μžλ£Œν˜•](./02_Day_Data_types/02_day_data_types.md)                                            |
| 03    |                          [λΆˆλ¦¬μ–Έ, μ—°μ‚°μž, λ‚ μ§œ](./03_Day_Booleans_operators_date/03_booleans_operators_date.md)                          |
| 04    |                                          [쑰건문](./04_Day_Conditionals/04_day_conditionals.md)                                          |
| 05    |                                                 [λ°°μ—΄](./05_Day_Arrays/05_day_arrays.md)                                                 |
| 06    |                                                 [반볡문](./06_Day_Loops/06_day_loops.md)                                                 |
| 07    |                                              [ν•¨μˆ˜](./07_Day_Functions/07_day_functions.md)                                              |
| 08    |                                                [객체](./08_Day_Objects/08_day_objects.md)                                                |
| 09    |                              [κ³ μ°¨ ν•¨μˆ˜](./09_Day_Higher_order_functions/09_day_higher_order_functions.md)                               |
| 10    |                                       [μ§‘ν•©κ³Ό λ§΅](./10_Day_Sets_and_Maps/10_day_Sets_and_Maps.md)                                        |
| 11    |                [ꡬ쑰 λΆ„ν•΄ ν• λ‹Ήκ³Ό μ „κ°œ μ—°μ‚°μž](./11_Day_Destructuring_and_spreading/11_day_destructuring_and_spreading.md)                |
| 12    |                                 [μ •κ·œν‘œν˜„μ‹](./12_Day_Regular_expressions/12_day_regular_expressions.md)                                 |
| 13    |                           [μ½˜μ†” 객체 λ©”μ„œλ“œ](./13_Day_Console_object_methods/13_day_console_object_methods.md)                           |
| 14    |                                     [였λ₯˜ 핸듀링](./14_Day_Error_handling/14_day_error_handling.md)                                      |
| 15    |                                               [클래슀](./15_Day_Classes/15_day_classes.md)                                               |
| 16    |                                                   [JSON](./16_Day_JSON/16_day_json.md)                                                   |
| 17    |                                        [μ›Ή μ €μž₯μ†Œ](./17_Day_Web_storages/17_day_web_storages.md)                                         |
| 18    |                                             [ν”„λ‘œλ―ΈμŠ€](./18_Day_Promises/18_day_promises.md)                                             |
| 19    |                                              [클둜져](./19_Day_Closures/19_day_closures.md)                                              |
| 20    |                              [클린 μ½”λ“œ μž‘μ„±λ²•](./20_Day_Writing_clean_codes/20_day_writing_clean_codes.md)                              |
| 21    |                                                    [DOM](./21_Day_DOM/21_day_dom.md)                                                     |
| 22    |                           [DOM 객체 μ‘°μž‘](./22_Day_Manipulating_DOM_object/22_day_manipulating_DOM_object.md)                            |
| 23    |                                   [이벀트 λ¦¬μŠ€λ„ˆ](./23_Day_Event_listeners/23_day_event_listeners.md)                                    |
| 24    |                          [λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ: νƒœμ–‘κ³„](./24_Day_Project_solar_system/24_day_project_solar_system.md)                           |
| 25    | [λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ: 세계 λ„μ‹œ 데이터 μ‹œκ°ν™” 1](./25_Day_World_countries_data_visualization_1/25_day_world_countries_data_visualization_1.md) |
| 26    | [λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ: 세계 λ„μ‹œ 데이터 μ‹œκ°ν™” 2](./26_Day_World_countries_data_visualization_2/26_day_world_countries_data_visualization_2.md) |
| 27    |                      [λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ: 포트폴리였](./27_Day_Mini_project_portfolio/27_day_mini_project_portfolio.md)                       |
| 28    |                     [λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ: λ¦¬λ”λ³΄λ“œ](./28_Day_Mini_project_leaderboard/28_day_mini_project_leaderboard.md)                      |
| 29    |         [λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ: 캐릭터 움직이기](./29_Day_Mini_project_animating_characters/29_day_mini_project_animating_characters.md)         |
| 30    |                                [μ΅œμ’… ν”„λ‘œμ νŠΈ](./30_Day_Mini_project_final/30_day_mini_project_final.md)                                 |

πŸ‡¬πŸ‡§ [English](../readMe.md)
πŸ‡ͺπŸ‡Έ [Spanish](../Spanish/readme.md)
πŸ‡·πŸ‡Ί [Russian](../RU/README.md)

[2일차 >>](./02_Day_Data_types/02_day_data_types.md)

![Thirty Days Of JavaScript](../images/day_1_1.png)

- [μžλ°”μŠ€ν¬λ¦½νŠΈ 30일 정볡](#30-days-of-javascript)
- [πŸ“” 1일차](#πŸ“”-1일차)
  - [μ†Œκ°œ](#μ†Œκ°œ)
  - [μš”κ΅¬ 사항](#μš”κ΅¬μ‚¬ν•­)
  - [μ„€μ •](#μ„€μ •)
    - [Node.js μ„€μΉ˜](#Node.js-μ„€μΉ˜)
    - [λΈŒλΌμš°μ €](#λΈŒλΌμš°μ €)
      - [ꡬ글 크둬 μ„€μΉ˜](#ꡬ글-크둬-μ„€μΉ˜)
      - [ꡬ글 크둬 μ½˜μ†”μ°½ μ—΄κΈ°](#ꡬ글-크둬-μ½˜μ†”μ°½-μ—΄κΈ°)
      - [μ½˜μ†”μ°½μ—μ„œ μ½”λ“œ μž‘μ„±ν•΄ 보기](#μ½˜μ†”μ°½μ—μ„œ-μ½”λ“œ-μž‘μ„±ν•΄-보기)
        - [Console.log둜 좜λ ₯ν•˜κΈ°](#Console.log둜-좜λ ₯ν•˜κΈ°)
        - [Console.log둜 μ—¬λŸ¬ 인자 좜λ ₯ν•˜κΈ°](#Console.log둜-μ—¬λŸ¬-인자-좜λ ₯ν•˜κΈ°)
        - [주석](#주석)
        - [문법](#문법)
      - [μ‚°μˆ ](#μ‚°μˆ )
    - [μ½”λ“œ νŽΈμ§‘κΈ°](#μ½”λ“œ-νŽΈμ§‘κΈ°)
      - [Visual Studio Code μ„€μΉ˜](#Visual-Studio-Code-μ„€μΉ˜)
      - [Visual Studio Code μ‚¬μš©λ²•](#Visual-Studio-Code-μ‚¬μš©λ²•)
  - [μ›Ή νŽ˜μ΄μ§€μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 적용](#μ›Ή-νŽ˜μ΄μ§€μ—μ„œ-μžλ°”μŠ€ν¬λ¦½νŠΈ-μ½”λ“œ-적용)
    - [인라인 μžλ°”μŠ€ν¬λ¦½νŠΈ](#인라인-μžλ°”μŠ€ν¬λ¦½νŠΈ)
    - [λ‚΄λΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ](#λ‚΄λΆ€-μžλ°”μŠ€ν¬λ¦½νŠΈ)
    - [μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ](#μ™ΈλΆ€-μžλ°”μŠ€ν¬λ¦½νŠΈ)
    - [μ—¬λŸ¬ μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ](#μ—¬λŸ¬-μ™ΈλΆ€-μžλ°”μŠ€ν¬λ¦½νŠΈ)
  - [μžλ£Œν˜• μ†Œκ°œ](#μžλ£Œν˜•-μ†Œκ°œ)
    - [숫자](#숫자)
    - [λ¬Έμžμ—΄](#λ¬Έμžμ—΄)
    - [λΆˆλ¦¬μ–Έ](#λΆˆλ¦¬μ–Έ)
    - [Undefined](#Undefined)
    - [Null](#Null)
  - [μžλ£Œν˜• ν™•μΈν•˜κΈ°](#μžλ£Œν˜•-ν™•μΈν•˜κΈ°)
  - [주석을 λ‹€μ‹œ](#주석을-λ‹€μ‹œ)
  - [λ³€μˆ˜](#λ³€μˆ˜)
- [πŸ’» 1일차: μ‹€μŠ΅](#-1일차-μ‹€μŠ΅)

# πŸ“” 1일차

## μ†Œκ°œ

μžλ°”μŠ€ν¬λ¦½νŠΈ 30일 정볡 ν”„λ‘œκ·Έλž˜λ° μ±Œλ¦°μ§€μ— μ°Έμ—¬ κ²°μ •ν•˜μ‹  것을 μΆ•ν•˜λ“œλ¦½λ‹ˆλ‹€. 이번 μ±Œλ¦°μ§€μ—μ„œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 되기 μœ„ν•΄μ„œ ν•„μš”ν•œ λͺ¨λ“  것듀과, 일반적인 ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ κ°œλ…μ„ λ‹€λ£Ήλ‹ˆλ‹€. ν•΄λ‹Ή μ±Œλ¦°μ§€λ₯Ό λͺ¨λ‘ μ™„λ£Œν•˜μ…¨λ‹€λ©΄, 30DaysOfJavaScript ν”„λ‘œκ·Έλž˜λ° μ±Œλ¦°μ§€ μ™„λ£Œ μΈμ¦μ„œλ₯Ό λ°›κ²Œ λ©λ‹ˆλ‹€. 도움이 ν•„μš”ν•˜κ±°λ‚˜, λ‹€λ₯Έ μ‚¬λžŒμ„ 도와주고 싢은 경우 [ν…”λ ˆκ·Έλž¨ κ·Έλ£Ή](https://t.me/ThirtyDaysOfJavaScript)에 연락을 μ£Όμ„Έμš”.

**μžλ°”μŠ€ν¬λ¦½νŠΈ 30일 정볡 μ±Œλ¦°μ§€**λŠ” μ΄ˆλ³΄μžμ™€ μˆ™λ ¨λœ μžλ°”μŠ€ν¬λ¦½νŠΈ 개발자λ₯Ό μœ„ν•œ μ§€μΉ¨μ„œμž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ— μ˜€μ‹  것을 ν™˜μ˜ν•©λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 웹을 λ‹€λ£¨λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€. μ €λŠ” μ—¬λŸ¬λΆ„λ“€μ„ κ°€λ₯΄μΉ˜κ³  μ‚¬μš©ν•˜λŠ” 것을 μ¦κΉλ‹ˆλ‹€. μ—¬λŸ¬λΆ„λ„ κ·Έλ ‡κ²Œ λ˜μ…¨μœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ 30일 정볡 μ±Œλ¦°μ§€λ₯Ό λ‹¨κ³„λ³„λ‘œ μ§„ν–‰ν•˜λ©΄μ„œ, 인λ₯˜ 역사상 κ°€μž₯ μΈκΈ°μžˆλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό 배우게 될 κ²ƒμž…λ‹ˆλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” **_μƒν˜Έμž‘μš©μ„ ν•˜λŠ” μ›Ήμ‚¬μ΄νŠΈλ₯Ό λ§Œλ“€κ±°λ‚˜, λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν˜Ήμ€ λ°μŠ€ν¬νƒ‘ μ• ν”Œλ¦¬μΌ€μ΄μ…˜, κ²Œμž„_**을 λ§Œλ“œλŠ” 데에 μ‚¬μš©μ΄ λ©λ‹ˆλ‹€. μš”μ¦ˆμŒ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” **_λ¨Έμ‹ λŸ¬λ‹κ³Ό AI_**λ₯Ό ν•˜λŠ”λ°μ—λ„ μ‚¬μš©μ΄ λ©λ‹ˆλ‹€. **_μžλ°”μŠ€ν¬λ¦½νŠΈ(JS)_**λŠ” 졜근 λͺ‡ λ…„κ°„ 인기가 μƒμŠΉν•˜μ—¬ 선두λ₯Ό 달리고 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ κΉƒν—™μ—μ„œ 6λ…„λ™μ•ˆ κ°€μž₯ 많이 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

## μš”κ΅¬μ‚¬ν•­

ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ μ„ μˆ˜ 지식은 ν•΄λ‹Ή μ±Œλ¦°μ§€μ—μ„œ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹  μ•„λž˜μ— λŒ€ν•œ μš”κ΅¬μ‚¬ν•­μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

1. μ—΄μ •
2. 컴퓨터
3. 인터넷
4. λΈŒλΌμš°μ €
5. μ½”λ“œ νŽΈμ§‘κΈ°

## μ„€μ •

μ €λŠ” μ—¬λŸ¬λΆ„μ΄ 개발자, 컴퓨터, 인터넷이 되기 μœ„ν•΄μ„œ κ°•ν•œ μš•κ΅¬μ™€ 동기뢀여가 μžˆλ‹€κ³  λ―ΏμŠ΅λ‹ˆλ‹€. λ§Œμ•½ 이런 것듀을 κ°€μ§€κ³  μžˆλ‹€λ©΄, ν•΄λ‹Ή μ±Œλ¦°μ§€λ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

### Node.js μ„€μΉ˜

μ—¬λŸ¬λΆ„μ€ Node.jsκ°€ λ‹Ήμž₯은 ν•„μš” μ—†μ§€λ§Œ, λ‚˜μ€‘μ„ μœ„ν•΄ μ„€μΉ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€. [ν•΄λ‹Ή μ‚¬μ΄νŠΈ](https://nodejs.org/en/)μ—μ„œ μ„€μΉ˜λ₯Ό μ§„ν–‰ν•΄ μ£Όμ„Έμš”.

![λ…Έλ“œ λ‹€μš΄λ‘œλ“œ](../images/download_node.png)

λ‹€μš΄λ‘œλ“œκ°€ 끝이 λ‚˜λ©΄ νŒŒμΌμ„ 더블 ν΄λ¦­ν•΄μ„œ μ—΄κ³  μ„€μΉ˜ν•©λ‹ˆλ‹€.

![λ…Έλ“œ μ„€μΉ˜](../images/install_node.png)

우리의 둜컬 컴퓨터에 터미널 창을 μ—΄κ±°λ‚˜, λͺ…λ Ή ν”„λ‘¬ν¬νŠΈλ₯Ό ν†΅ν•΄μ„œ λ…Έλ“œκ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

```sh
asabeneh $ node -v
v12.14.0
```

ν•΄λ‹Ή μ±Œλ¦°μ§€μ„ μ œμž‘ν•  λ•Œμ—λŠ” Node 12.14.0 버전을 μ‚¬μš©ν–ˆμœΌλ‚˜, ν˜„μž¬λŠ” Node 14.17.6 버전을 ꢌμž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

### λΈŒλΌμš°μ €

λΈŒλΌμš°μ €λŠ” λ§Žμ€ 것듀이 μ‘΄μž¬ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, μš°λ¦¬λŠ” ꡬ글 크둬을 κ°•λ ₯ν•˜κ²Œ ꢌμž₯ν•©λ‹ˆλ‹€.

#### ꡬ글 크둬 μ„€μΉ˜

[ꡬ글 크둬](https://www.google.com/chrome/)이 μ„€μΉ˜λ˜μ–΄μžˆμ§€ μ•Šλ‹€λ©΄, μ„€μΉ˜λ₯Ό ν•΄ μ£Όμ„Έμš”. μš°λ¦¬λŠ” λΈŒλΌμš°μ € μ½˜μ†”μ°½μ—μ„œ κ°„λ‹¨ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ € μ½˜μ†”μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

![ꡬ글 크둬](../images/google_chrome.png)

#### ꡬ글 크둬 μ½˜μ†”μ°½ μ—΄κΈ°

λΈŒλΌμš°μ € 였λ₯Έμͺ½ 상단에 μžˆλŠ” 점 3개λ₯Ό ν΄λ¦­ν•˜κ³  **μΆ”κ°€ 도ꡬ -> 개발자 도ꡬ**λ₯Ό μ„ νƒν•˜κ±°λ‚˜ λ°”λ‘œ κ°€κΈ° ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡬ글 크둬 μ½˜μ†”μ°½μ„ μ—΄ 수 μžˆμŠ΅λ‹ˆλ‹€. μ €λŠ” 단좕킀 μ‚¬μš©μ„ μ„ ν˜Έν•©λ‹ˆλ‹€.

![Opening chrome](../images/opening_developer_tool.png)

μ½˜μ†”μ°½μ„ μ—΄κΈ°μœ„ν•œ λ‹¨μΆ•ν‚€λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

```sh
Mac
Command+Option+J

Windows/Linux:
Ctl+Shift+J
```

![Opening console](../images/opening_chrome_console_shortcut.png)

μ½˜μ†”μ°½μ„ μ—΄κ³  λ‚˜μ„œ, ν‘œμ‹œλœ λ²„νŠΌμ„ κ²½ν—˜ν•΄ λ³΄μ„Έμš”. μš°λ¦¬λŠ” μ½˜μ†”μ°½μ—μ„œ λ§Žμ€ μ‹œκ°„μ„ λ³΄λ‚΄κ²Œ 될 것 μž…λ‹ˆλ‹€. μ½˜μ†”μ°½μ€ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œκ°€ μ €μž₯λ˜λŠ” μœ„μΉ˜μž…λ‹ˆλ‹€. ꡬ글 크둬의 μ½˜μ†”μ°½μ˜ V8 엔진은 μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό 기계 μ½”λ“œλ‘œ λ³€κ²½μ‹œμΌœμ€λ‹ˆλ‹€.

μ½˜μ†”μ°½μ—μ„œ κ°„λ‹¨ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 예제λ₯Ό μ μ–΄λ΄…μ‹œλ‹€.

![write code on console](../images/js_code_on_chrome_console.png)

#### μ½˜μ†”μ°½μ—μ„œ μ½”λ“œ μž‘μ„±ν•΄ 보기

μš°λ¦¬λŠ” ꡬ글 크둬이 μ•„λ‹ˆλ”λΌλ„, μ½˜μ†”μ°½μ—μ„œ κ°„λ‹¨ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 μ±Œλ¦°μ§€λ₯Ό μœ„ν•΄μ„œλŠ” 였직 ꡬ글 크둬 μ½˜μ†”μ°½μ—λ§Œ μ§‘μ€‘ν•©μ‹œλ‹€. μ½˜μ†”μ°½μ„ μ—΄μ–΄ μ£Όμ„Έμš”.

```sh
Mac
Command+Option+I

Windows:
Ctl+Shift+I
```

##### Console.log둜 좜λ ₯ν•˜κΈ°

우리의 첫 번째 μ½”λ“œλŠ”, λ‚΄μž₯λ˜μ–΄μžˆλŠ” ν•¨μˆ˜μΈ **console.log()**μž…λ‹ˆλ‹€. 인수둜 μž…λ ₯ 데이터λ₯Ό μ „λ‹¬ν•˜λ©΄, ν•΄λ‹Ή ν•¨μˆ˜κ°€ 결과물을 μ½˜μ†”μ°½μ— ν‘œμ‹œν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” console.log() ν•¨μˆ˜μ— 'Hello, World'λ₯Ό μΈν’‹μœΌλ‘œ 전달을 ν•΄ λ΄…μ‹œλ‹€.

```js
console.log('Hello, World!');
```

##### Console.log둜 μ—¬λŸ¬ 인자 좜λ ₯ν•˜κΈ°

**console.log()** ν•¨μˆ˜λŠ” 반점(comma)둜 μ—¬λŸ¬κ°œμ˜ 인자λ₯Ό ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€. 문법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. **console.log(param1, param2, param3)**

![console log multiple arguments](../images/console_log_multipl_arguments.png)

```js
console.log('Hello', 'World', '!');
console.log('HAPPY', 'NEW', 'YEAR', 2020);
console.log('Welcome', 'to', 30, 'Days', 'Of', 'JavaScript');
```

μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œμ™€ 같이, *console.log()*ν•¨μˆ˜λŠ” μ—¬λŸ¬ 인자λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μΆ•ν•˜λ“œλ¦½λ‹ˆλ‹€! 당신은 *console.log()*λ₯Ό μ΄μš©ν•΄μ„œ 첫 μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

##### 주석

μš°λ¦¬λŠ” 우리의 μ½”λ“œμ— 주석을 μΆ”κ°€ν•©λ‹ˆλ‹€. 주석은 μ½”λ“œμ˜ 가독성과, μ½”λ“œμ˜ μ„€λͺ…을 λ‚¨κΈ°λŠ”λ°μ— 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ½”λ“œ 내뢀에 주석을 μ‹€ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ //둜 μ‹œμž‘ν•˜λŠ” 것은 주석이며, /\*둜 μ‹œμž‘ν•΄μ„œ \*/둜 λ‹«νžˆλŠ” 것 λ˜ν•œ 주석이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

**ν•œ 쀄 주석 μ˜ˆμ‹œ**

// 첫 번째 μ£Όμ„μž…λ‹ˆλ‹€.  
// 두 번째 μ£Όμ„μž…λ‹ˆλ‹€.
// ν•œ 쀄 μ£Όμ„μž…λ‹ˆλ‹€.

**μ—¬λŸ¬ 쀄 주석 μ˜ˆμ‹œ**

/_
μ—¬λŸ¬ 쀄 주석할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
μ—¬λŸ¬μ€„ 주석은 μ—¬λŸ¬ 쀄을 μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 웹을 λ‹€λ£¨λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μž…λ‹ˆλ‹€.
_/

##### 문법

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” μΈκ°„μ˜ 언어와 μœ μ‚¬ν•©λ‹ˆλ‹€. μ˜μ–΄ ν˜Ήμ€ λ‹€λ₯Έ λͺ¨λ“  μ–Έμ–΄λŠ” 단어뢀터 μ‹œμž‘ν•΄μ„œ 문법, λ¬Έμž₯, λ³΅μž‘ν•œ λ¬Έμž₯을 μ‚¬μš©ν•˜κ³  μ˜λ―ΈμžˆλŠ” λ©”μ‹œμ§€λ“€μ„ μ „λ‹¬ν•©λ‹ˆλ‹€. μ˜μ–΄μ—μ„œμ˜ ꡬ문의 μ˜λ―ΈλŠ” μ–Έμ–΄μ—μ„œ 잘 λ§Œλ“€μ–΄μ§„ λ¬Έμž₯을 λ§Œλ“€κΈ° μœ„ν•œ 단어와 λ¬Έλ²•μ˜ λ°°μ—΄μž…λ‹ˆλ‹€. λ¬Έλ²•μ˜ 기술적인 μ •μ˜λŠ” 컴퓨터 μ–Έμ–΄μ—μ„œμ˜ λ¬Έμž₯ κ΅¬μ‘°μž…λ‹ˆλ‹€. ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—λŠ” 문법이 μžˆμŠ΅λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ™€, λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” 문법을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ 이해할 수 μžˆλŠ” 문법을 μž‘μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, ν•΄λ‹Ή μ½”λ“œλŠ” μ—¬λŸ¬ κ°€μ§€ 였λ₯˜λ₯Ό μΌμœΌν‚¬ κ²ƒμž…λ‹ˆλ‹€. 였λ₯˜μ— λŒ€ν•œ λ‹€μ–‘ν•œ μ’…λ₯˜λŠ” λ‹€μŒμ— μ‚΄νŽ΄λ΄…μ‹œλ‹€. μ§€κΈˆλΆ€ν„°λŠ” κ°„λ‹¨ν•œ 문법 였λ₯˜λ₯Ό μ‚΄νŽ΄λ΄…μ‹œλ‹€.

![Error](../images/raising_syntax_error.png)

고의적으둜 μ‹€μˆ˜λ₯Ό μ €μ§ˆλ €μŠ΅λ‹ˆλ‹€. κ·Έ κ²°κ³Ό μ½˜μ†”μ°½μ€ ꡬ문 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€κ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ 이런 ꡬ문은 맀우 μœ μ΅ν•©λ‹ˆλ‹€. μ–΄λ–€ μ‹€μˆ˜κ°€ μΌμ–΄λ‚¬λŠ”μ§€ μ•Œλ €μ€λ‹ˆλ‹€. 였λ₯˜ ν”Όλ“œλ°±μ— λŒ€ν•œ κ°€μ΄λ“œλΌμΈμ„ μ½μœΌλ©΄μ„œ μš°λ¦¬λŠ” ꡬ문을 μˆ˜μ •ν•˜κ³  문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μœΌλ‘œλΆ€ν„° λ°œμƒν•œ 였λ₯˜λ₯Ό κ΅¬λ³„ν•˜κ³  μ œκ±°ν•˜λŠ” 과정을 디버깅이라고 λ§ν•©λ‹ˆλ‹€. μ•„λž˜ 였λ₯˜λ₯Ό μˆ˜μ •ν•΄ λ΄…μ‹œλ‹€:

```js
console.log('Hello, World!');
console.log('Hello, World!');
```

μ§€κΈˆκΉŒμ§€, μš°λ¦¬λŠ” _console.log()_ ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ λ¬Έμžμ—΄μ„ ν‘œμ‹œν•˜λŠ” 방법을 λ‹€λ£¨μ—ˆμŠ΅λ‹ˆλ‹€. _console.log()_ λ₯Ό μ΄μš©ν•΄μ„œ λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜λ €λ©΄ μž‘μ€ λ”°μ˜΄ν‘œλ‚˜, 큰 λ”°μ˜΄ν‘œ ν˜Ήμ€ λ°±ν‹± λ”°μ˜΄ν‘œμ•ˆμ— λ“€μ–΄κ°€μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

**μ˜ˆμ‹œ:**

```js
console.log('Hello, World!');
console.log('Hello, World!');
console.log(`Hello, World!`);
```

#### μ‚°μˆ 

μ΄λ²ˆμ—λŠ” ꡬ글 크둬 μ½˜μ†”μ°½μ—μ„œ 숫자 μžλ£Œν˜•μ„ _console.log()_ 둜 μž‘μ„±ν•˜λŠ” 법에 λŒ€ν•΄μ„œ 곡뢀해 λ΄…μ‹œλ‹€.

λ¬Έμžμ—΄μ™Έμ—λ„ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄μ„œ μˆ˜ν•™μ μΈ 계산도 κ°€λŠ₯ν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 κ°„λ‹¨ν•œ 계산을 ν•΄ λ΄…μ‹œλ‹€.
μ½˜μ†”μ°½μ€ **_console.log()_** ν•¨μˆ˜ 없이 직접 인수λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ•žμ„  λ§ν•œ 것은 ν•¨μˆ˜ μ‚¬μš©μ΄ ν•„μˆ˜μ μΈ ν…μŠ€νŠΈ νŽΈμ§‘κΈ°μ—μ„œ μΌμ–΄λ‚˜κΈ° λ•Œλ¬Έμ—, 맨 μ•ž 뢀뢄에 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ½˜μ†”μ°½μ„ ν†΅ν•΄μ„œ λͺ…령어듀을 κ°€μ§€κ³  놀 수 μžˆμŠ΅λ‹ˆλ‹€.

![Arithmetic](../images/arithmetic.png)

```js
console.log(2 + 3); // λ§μ…ˆ
console.log(3 - 2); // λΊ„μ…ˆ
console.log(2 * 3); // κ³±μ…ˆ
console.log(3 / 2); // λ‚˜λˆ—μ…ˆ
console.log(3 % 2); // λ‚˜λˆ—μ…ˆ - λ‚˜λ¨Έμ§€ κ΅¬ν•˜κΈ°
console.log(3 ** 2); // 제곱 3 ** 2 == 3 * 3
```

### μ½”λ“œ νŽΈμ§‘κΈ°

μš°λ¦¬λŠ” λΈŒλΌμš°μ €μ˜ μ½˜μ†”μ—μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμ§€λ§Œ, 큰 ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ°”λžŒμ§ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œ μΌν•˜λŠ” ν™˜κ²½μ—μ„œ κ°œλ°œμžλŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„œ μ„œλ‘œ λ‹€λ₯Έ μ½”λ“œ νŽΈμ§‘κΈ°λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. ν•΄λ‹Ή μžλ°”μŠ€ν¬λ¦½νŠΈ 30일 정볡 μ±Œλ¦°μ§€μ—μ„œλŠ” Visual Studio Codeλ₯Ό μ‚¬μš©ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.

#### Visual Studio Code μ„€μΉ˜

Visual Studio CodeλŠ” 맀우 유λͺ…ν•œ μ˜€ν”ˆ μ†ŒμŠ€ ν…μŠ€νŠΈ νŽΈμ§‘κΈ°μž…λ‹ˆλ‹€. μš°λ¦¬λŠ” [Visual Studio Code](https://code.visualstudio.com/)λ₯Ό λ‹€μš΄λ‘œλ“œ ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. κ·Έλ ‡μ§€λ§Œ λ‹€λ₯Έ νŽΈμ§‘κΈ°κ°€ λ§ˆμŒμ— λ“ λ‹€λ©΄, μ›ν•˜μ‹œλŠ” λŒ€λ‘œ μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

![Vscode](../images/vscode.png)

Visual Studio Codeλ₯Ό μ„€μΉ˜ν–ˆλ‹€λ©΄, μ‹€μ œλ‘œ μ‚¬μš©ν•΄ λ΄…μ‹œλ‹€.

#### Visual Studio Code μ‚¬μš©λ²•

Visual Studio Code의 μ•„μ΄μ½˜μ„ 더블 ν΄λ¦­ν•΄μ„œ μ‹€ν–‰ν•©μ‹œλ‹€. 싀행이 λ˜μ—ˆλ‹€λ©΄ λ‹€μŒκ³Ό 같은 화면을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 라벨이 μ ν˜€μ ΈμžˆλŠ” μ•„μ΄μ½˜λ“€μ„ μ‚¬μš©ν•΄ λ΄…μ‹œλ‹€.

![Vscode ui](../images/vscode_ui.png)

![Vscode add project](../images/adding_project_to_vscode.png)

![Vscode open project](../images/opening_project_on_vscode.png)

![script file](../images/scripts_on_vscode.png)

![Installing Live Server](../images/vsc_live_server.png)

![running script](../images/running_script.png)

![coding running](../images/launched_on_new_tab.png)

## μ›Ή νŽ˜μ΄μ§€μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 적용

μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλŠ” μ›Ή νŽ˜μ΄μ§€μ— μ„Έ κ°€μ§€ λ°©λ²•μœΌλ‘œ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

- **인라인 μžλ°”μŠ€ν¬λ¦½νŠΈ**
- **λ‚΄λΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ**
- **μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ**
- **μ—¬λŸ¬ μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ**

ν•΄λ‹Ή μ„Ήμ…˜μ—μ„œλŠ” μ›ΉνŽ˜μ΄μ§€μ— μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μΆ”κ°€ν•˜λŠ” 각 방법을 λ‹€λ£° μ˜ˆμ •μž…λ‹ˆλ‹€.

### 인라인 μžλ°”μŠ€ν¬λ¦½νŠΈ

λ°μŠ€ν¬νƒ‘ λ“± 아무 κ³³μ—μ„œ 30DaysOfJSλΌλŠ” μ΄λ¦„μœΌλ‘œ ν”„λ‘œμ νŠΈ 폴더λ₯Ό λ§Œλ“€μ–΄ μ£Όμ„Έμš”. λ§Œλ“€κ³  λ‚˜μ„œ, **_index.html_**을 μƒμ„±ν•©μ‹œλ‹€. μ•„λž˜μ˜ μ½”λ“œλ₯Ό λΆ™μ—¬λ„£κ³  크둬과 같은 λΈŒλΌμš°μ €λ‘œ μ—΄μ–΄λ΄…μ‹œλ‹€.

```html
<!DOCTYPE html>
<html>
  <head>
    <title>30DaysOfScript:Inline Script</title>
  </head>
  <body>
    <button onclick="alert('Welcome to 30DaysOfJavaScript!')">
      클릭해 μ£Όμ„Έμš”
    </button>
  </body>
</html>
```

μ§€κΈˆ 첫 인라인 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ λ‚΄μž₯ ν•¨μˆ˜ _alert()_ λ₯Ό μ΄μš©ν•΄μ„œ κ²½κ³  λ©”μ‹œμ§€κ°€ λœ¨κ²Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

### λ‚΄λΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ

λ‚΄λΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” _head_ ν˜Ήμ€ _body_ μ—μ„œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, HTMLλ¬Έμ„œμ—μ„œ body에 λ„£λŠ” 것이 더 μ„ ν˜Έ λ©λ‹ˆλ‹€.
첫 번째둜, νŽ˜μ΄μ§€μ˜ head뢀뢄에 μž‘μ„±ν•΄ λ΄…μ‹œλ‹€.

```html
<!DOCTYPE html>
<html>
  <head>
    <title>30DaysOfScript:Internal Script</title>
    <script>
      console.log('Welcome to 30DaysOfJavaScript');
    </script>
  </head>
  <body></body>
</html>
```

μš°λ¦¬λŠ” μœ„μ™€ 같이 λ‚΄λΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄, body뢀뢄에 μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό λ„£λŠ” 것이 더 μ„ ν˜Έλ©λ‹ˆλ‹€.

```html
<!DOCTYPE html>
<html>
  <head>
    <title>30DaysOfScript:Internal Script</title>
  </head>
  <body>
    <button onclick="alert('Welcome to 30DaysOfJavaScript!');">Click Me</button>
    <script>
      console.log('Welcome to 30DaysOfJavaScript');
    </script>
  </body>
</html>
```

λΈŒλΌμš°μ €μ˜ μ½˜μ†”μ°½μ„ μ—΄κ³  console.log()의 좜λ ₯값을 확인해 λ΄…μ‹œλ‹€.

![js code from vscode](../images/js_code_vscode.png)

### μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ

λ‚΄λΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ 방식과 μœ μ‚¬ν•˜κ²Œ, μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ 방식은 header ν˜Ήμ€ body에 μ‘΄μž¬ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 μ—­μ‹œ body에 μ λŠ” 것이 μ„ ν˜Έλ©λ‹ˆλ‹€.
μš°μ„ , .js ν™•μž₯자λ₯Ό κ°€μ§„ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ 생성해야 ν•©λ‹ˆλ‹€. .js ν™•μž₯자둜 λλ‚˜λŠ” λͺ¨λ“  νŒŒμΌμ€ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμž…λ‹ˆλ‹€. introduction.js ν”„λ‘œμ νŠΈ 폴더 내뢀에 νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ•„λž˜μ™€ 같은 μ½”λ“œλ₯Ό λ„£μ–΄ λ΄…μ‹œλ‹€. 그리고 λ³Έλ¬Έ ν•˜λ‹¨μ— 이 .jsνŒŒμΌμ„ μ—°κ²°ν•΄ λ΄…μ‹œλ‹€.

```js
console.log('Welcome to 30DaysOfJavaScript');
```

_head_ μ—μ„œμ˜ μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ:

```html
<!DOCTYPE html>
<html>
  <head>
    <title>30DaysOfJavaScript:External script</title>
    <script src="introduction.js"></script>
  </head>
  <body></body>
</html>
```

_body_ μ—μ„œμ˜ μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ:

```html
<!DOCTYPE html>
<html>
  <head>
    <title>30DaysOfJavaScript:External script</title>
  </head>
  <body>
    <!-- header ν˜Ήμ€ body 어디에 λ„£λ“  상관이 μ—†μŠ΅λ‹ˆλ‹€. -->
    <!-- κ·ΈλŸ¬λ‚˜, 여기에 λ„£λŠ” 것이 μ„ ν˜Έλ˜λŠ” νŽΈμž…λ‹ˆλ‹€. -->
    <script src="introduction.js"></script>
  </body>
</html>
```

λΈŒλΌμš°μ €μ˜ μ½˜μ†”μ°½μ„ μ—΄κ³  console.log()의 좜λ ₯값을 확인해 λ΄…μ‹œλ‹€.

### μ—¬λŸ¬ μ™ΈλΆ€ μžλ°”μŠ€ν¬λ¦½νŠΈ

μš°λ¦¬λŠ” ν•œ 개의 μ›Ή νŽ˜μ΄μ§€μ— μ—¬λŸ¬ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
ν”„λ‘œμ νŠΈ 폴더 내에 helloworld.js νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ•„λž˜ μ½”λ“œλ₯Ό μž‘μ„±ν•΄ λ΄…μ‹œλ‹€.

```js
console.log('Hello, World!');
```

```html
<!DOCTYPE html>
<html>
  <head>
    <title>Multiple External Scripts</title>
  </head>
  <body>
    <script src="./helloworld.js"></script>
    <script src="./introduction.js"></script>
  </body>
</html>
```

_main.js νŒŒμΌμ€ λ‹€λ₯Έ λͺ¨λ“  μžλ°”μŠ€ν¬λ¦½νŠΈ 파일 μ•„λž˜μ— μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€_ 이것은 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

![Multiple Script](../images/multiple_script.png)

## μžλ£Œν˜• μ†Œκ°œ

μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” μ—¬λŸ¬ μžλ£Œν˜•λ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ μžλ£Œν˜•μž…λ‹ˆλ‹€: _λ¬Έμžμ—΄, 숫자, λΆˆλ¦¬μ–Έ, undefined, null_ μΆ”κ°€λ‘œ _Symbol_ 이 μžˆμŠ΅λ‹ˆλ‹€.

### 숫자

- μ •μˆ˜ μžλ£Œν˜•: μ •μˆ˜ (음수, 0, μ–‘μˆ˜) 숫자
  μ˜ˆμ‹œ:
  ... -3, -2, -1, 0, 1, 2, 3 ...
- μ‹€μˆ˜ μžλ£Œν˜•: μ†Œμˆ˜ 숫자
  μ˜ˆμ‹œ
  ... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...

### λ¬Έμžμ—΄

μž‘μ€ λ”°μ˜΄ν‘œ, 큰 λ”°μ˜΄ν‘œ, λ°±ν‹± λ”°μ˜΄ν‘œ 사이에 μžˆλŠ” ν•œ 개 ν˜Ήμ€ κ·Έ μ΄μƒμ˜ λͺ¨μŒμž…λ‹ˆλ‹€.

**μ˜ˆμ‹œ:**

```js
'Asabeneh';
'Finland';
'JavaScript is a beautiful programming language';
'I love teaching';
'I hope you are enjoying the first day'`We can also create a string using a backtick`;
('A string could be just as small as one character as big as many pages');
```

### λΆˆλ¦¬μ–Έ

λΆˆλ¦¬μ–Έ μžλ£Œν˜•μ€ μ°Έκ°’κ³Ό 거짓값이 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  λΉ„κ΅λŠ” μ°Έ ν˜Ήμ€ 거짓값을 κ°–λŠ” λΆˆλ¦¬μ–Έ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

λΆˆλ¦¬μ–Έ μžλ£Œν˜•μ€ μ°Έ ν˜Ήμ€ κ±°μ§“μž…λ‹ˆλ‹€.

**μ˜ˆμ‹œ:**

```js
true; // 뢈이 μΌœμ Έμžˆλ‹€λ©΄ 값은 trueμž…λ‹ˆλ‹€.
false; // 뢈이 κΊΌμ Έμžˆλ‹€λ©΄ 값은 trueμž…λ‹ˆλ‹€.
```

### Undefined

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜μ— 아무 값도 ν• λ‹Ήν•˜μ§€ μ•ŠμœΌλ©΄, λ³€μˆ˜λŠ” undefined값을 κ°€μ§‘λ‹ˆλ‹€. 덧뢙여 μ–˜κ°€ν•˜λ©΄ ν•¨μˆ˜κ°€ 아무 값도 λ°˜ν™˜ν•˜μ§€ μ•ŠμœΌλ©΄, 그것은 undefinedλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

```js
let firstName;
console.log(firstName); // undefined이닀. 할당이 λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
```

### Null

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 값이 λΉ„μ–΄μžˆμœΌλ©΄ λ³€μˆ˜λŠ” null값을 κ°€μ§‘λ‹ˆλ‹€.

```js
let emptyValue = null;
```

## μžλ£Œν˜• ν™•μΈν•˜κΈ°

νŠΉμ • λ³€μˆ˜μ˜ μžλ£Œν˜•μ„ ν™•μΈν•˜κ³  μ‹ΆμœΌλ©΄ **typeof** μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. μ˜ˆμ‹œλ₯Ό 확인해 λ΄…μ‹œλ‹€.

```js
console.log(typeof 'Asabeneh'); // λ¬Έμžμ—΄
console.log(typeof 5); // 숫자
console.log(typeof true); // λΆˆλ¦¬μ–Έ
console.log(typeof null); // null
console.log(typeof undefined); // undefined
```

## 주석을 λ‹€μ‹œ

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄μ²˜λŸΌ 주석을 달 수 있던 것을 κΈ°μ–΅ν•΄ λ΄…μ‹œλ‹€. 주석은 가독성을 μœ„ν•΄μ„œ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.
μ£Όμ„μ—λŠ” 두 방법이 μžˆμŠ΅λ‹ˆλ‹€.

- _ν•œ 쀄 주석_
- _μ—¬λŸ¬ 쀄 주석_

ν•œ 쀄 주석:

```js
// ν•œ 쀄 μ£Όμ„μœΌλ‘œ μ½”λ“œ μžμ²΄μ— 주석 달기
// let firstName = 'Asabeneh'; ν•œ 쀄 주석
// let lastName = 'Yetayeh'; ν•œ 쀄 주석
```

μ—¬λŸ¬ 쀄 주석:

```js
/*
  let location = 'Helsinki';
  let age = 100;
  let isMarried = true;
  This is a Multiple line comment
*/
```

## λ³€μˆ˜

λ³€μˆ˜λŠ” λ°μ΄ν„°μ˜ _μ»¨ν…Œμ΄λ„ˆ_ μž…λ‹ˆλ‹€. λ³€μˆ˜λŠ” λ©”λͺ¨λ¦¬ 곡간에 데이터λ₯Ό μ €μž₯ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄, λ©”λͺ¨λ¦¬κ°€ 할당이 λ©λ‹ˆλ‹€. λ³€μˆ˜μ— 값을 ν• λ‹Ήν•˜λ©΄μ€, λ©”λͺ¨λ¦¬ μ£Όμ†ŒλŠ” λ°μ΄ν„°λ‘œ μ±„μ›Œμ§‘λ‹ˆλ‹€. λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κΈ° μœ„ν•΄μ„œλŠ” _var_, _let_, _const_ ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž¨μ΄ λŒμ•„κ°€λ©΄μ„œ λ³€μˆ˜μ˜ 값이 λ°”λ€ŒλŠ” 경우, _let_ ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ§Œμ•½ λ³€μˆ˜μ˜ 값이 μ•„μ˜ˆ λ°”λ€Œμ§€ μ•Šμ„ 것이라면, _const_ ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ˜ˆλ‘œλ“€μ–΄ PI, κ΅­κ°€λͺ…, 쀑λ ₯은 λ³€ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ _const_ λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” 이 μ±Œλ¦°μ§€μ—μ„œ _var_ ν‚€μ›Œλ“œλŠ” μ‚¬μš©ν•˜μ§€ μ•Šμ„ 것이고, μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. 그것은 λ§Žμ€ 약점을 κ°€μ§€κ³  있고, 였λ₯˜λ₯Ό λ°œμƒν•˜κΈ° μ‰¬μš΄ λ°©λ²•μž…λ‹ˆλ‹€. 각 ν‚€μ›Œλ“œμ˜ μžμ„Έν•œ 사항, λ‹€λ₯Έ λ²”μœ„(scope)μ—μ„œ λ‹€μŒμ— μ•Œμ•„λ΄…μ‹œλ‹€. μ§€κΈˆμ€ μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 뢀뢄이면 μΆ©λΆ„ν•©λ‹ˆλ‹€.

μœ νš¨ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜ 이름을 μœ„ν•΄μ„œλŠ” μ•„λž˜μ™€ 같은 κ·œμΉ™μ„ λ”°λΌμ•Όν•©λ‹ˆλ‹€:

- 숫자둜 μ‹œμž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
- λ‹¬λŸ¬ 기호($), 밑쀄(\_)을 μ œμ™Έν•œ 특수문자λ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€.
- camelCase 넀이밍 μ»¨λ²€μ…˜μ„ λ”°λ¦…λ‹ˆλ‹€.
- λ³€μˆ˜ 이름 단어 사이에 곡백이 μ—†μ–΄μ•Ό ν•©λ‹ˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ΄λ¦„μ§“λŠ” 법을 μ˜ˆμ‹œλ₯Ό 톡해 확인해 λ΄…μ‹œλ‹€.

```js
firstName;
lastName;
country;
city;
capitalCity;
age;
isMarried;

first_name;
last_name;
is_married;
capital_city;

num1;
num_1;
_num_1;
$num1;
year2020;
year_2020;
```

첫 λ²ˆμ§Έμ™€ 두 번째 λ³€μˆ˜λ“€μ€ camelCase λ„€μ΄λ°μ»¨λ²€μ…˜μ„ λ”°λ¦…λ‹ˆλ‹€. 우리 μžλ£Œμ—μ„œλŠ” camelCaseλ₯Ό μ‚¬μš©ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.

λ‹€μŒμ€ μ μ ˆν•˜μ§€ λͺ»ν•œ μ˜ˆμ‹œμž…λ‹ˆλ‹€:

```sh
  first-name
  1_num
  num_#_1
```

μ„œλ‘œ λ‹€λ₯Έ μœ ν˜•μ˜ λ°μ΄ν„°λ‘œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•©μ‹œλ‹€. λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ ΄λ…€ _let_, _const_ ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ³€μˆ˜ 이름 뒀에 λ“±ν˜Έμ™€ 값을 μ‚¬μš©ν•΄ λ΄…μ‹œλ‹€.

```js
// Syntax
let nameOfVariable = value;
```

**Examples of declared variables**

```js
// λ‹€λ₯Έ μžλ£Œν˜•μ„ κ°€μ§€κ³  μžˆλŠ” λ³€μˆ˜ μ„ μ–Έ
let firstName = 'Asabeneh'; // 이름
let lastName = 'Yetayeh'; // μ„±
let country = 'Finland'; // λ‚˜λΌ
let city = 'Helsinki'; // μˆ˜λ„
let age = 100; // λ‚˜μ΄
let isMarried = true; // 결혼 μ—¬λΆ€

console.log(firstName, lastName, country, city, age, isMarried);
```

```sh
Asabeneh Yetayeh Finland Helsinki 100 true
```

```js
// 각각 λ‹€λ₯Έ 숫자 μžλ£Œν˜• μ„ μ–Έ
let age = 100; // μ •μˆ˜ (λ‚˜μ΄)
const gravity = 9.81; // μ‹€μˆ˜ (쀑λ ₯)
const boilingPoint = 100; // μ •μˆ˜ (λ“λŠ” 점)
const PI = 3.14; // μ‹€μˆ˜ (파이)
console.log(gravity, boilingPoint, PI);
```

```sh
9.81 100 3.14
```

```js
// μ‰Όν‘œ(,)λ₯Ό 톡해 λ³€μˆ˜λ₯Ό κ΅¬λΆ„ν•΄μ„œ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
let name = 'Asabeneh', // 이름
  job = 'teacher', // 직업
  live = 'Finland'; // μ‚¬λŠ” κ³³
console.log(name, job, live);
```

```sh
Asabeneh teacher Finland
```

01-Day ν΄λ”μ—μ„œ _index.html_ νŒŒμΌμ„ μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 λ©”μ‹œμ§€κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

![Day one](../images/day_1.png)

πŸŒ• 당신은 λŒ€λ‹¨ν•©λ‹ˆλ‹€! 1일차 도전을 μ™„λ£Œν–ˆκ³ , μš°λ¦¬λŠ” λ©‹μ Έμ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. 이제 λ‡Œμ™€ κ·Όμœ‘μ„ μš΄λ™ν•΄ λ΄…μ‹œλ‹€!

# πŸ’» 1일차: μ‹€μŠ΅

1. λ‹€μŒμ˜ 의미λ₯Ό κ°–λŠ” 주석을 λ§Œλ“€μ–΄ λ΄…μ‹œλ‹€. _주석은 μ½”λ“œλ₯Ό 읽을 수 있게 λ§Œλ“­λ‹ˆλ‹€._
2. 또 λ‹€λ₯Έ 주석을 λ§Œλ“€μ–΄ λ΄…μ‹œλ‹€. _30DaysOfJavascript에_ μ˜€μ‹  것을 ν™˜μ˜ν•©λ‹ˆλ‹€.
3. μ—¬λŸ¬ 쀄 주석을 μ‚¬μš©ν•΄ λ΄…μ‹œλ‹€. _주석은 읽기 νŽΈν•˜κ³ , μž¬μ‚¬μš©ν•˜κΈ° 쉽고, 정보λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€_
4. variable.js νŒŒμΌμ„ λ§Œλ“€κ³ , λ¬Έμžμ—΄ λ³€μˆ˜, λΆˆλ¦¬μ–Έ λ³€μˆ˜, undefined λ³€μˆ˜, null λ³€μˆ˜λ₯Ό μ„ μ–Έν•΄ λ΄…μ‹œλ‹€.
5. datatype.js νŒŒμΌμ„ λ§Œλ“€κ³  **_typeof_** 연산을 ν†΅ν•΄μ„œ λ°μ΄ν„°μ˜ μžλ£Œν˜•μ„ 확인해 λ΄…μ‹œλ‹€. λͺ¨λ“  λ³€μˆ˜λ₯Ό ν™•μΈν•©μ‹œλ‹€!
6. 값을 ν• λ‹Ήν•˜μ§€ μ•Šκ³  λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄ λ΄…λ‹ˆλ‹€.
7. 값을 ν• λ‹Ήν•˜λ©΄μ„œ λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄ λ΄…λ‹ˆλ‹€.
8. λ³€μˆ˜ μ„±, 이름, 결혼 μ—¬λΆ€, μ‚¬λŠ” κ³³, λ‚˜μ΄λ₯Ό μ—¬λŸ¬ μ€„λ‘œ μ„ μ–Έν•΄ λ΄…μ‹œλ‹€.
9. λ³€μˆ˜ μ„±, 이름, 결혼 μ—¬λΆ€, μ‚¬λŠ” κ³³, λ‚˜μ΄λ₯Ό 각각 ν•œ μ€„λ‘œ μ„ μ–Έν•΄ λ΄…μ‹œλ‹€.
10. 두 λ³€μˆ˜ _myAge_ 와 _yourAge_ λ₯Ό λ§Œλ“€μ–΄μ„œ μ΄ˆκΈ°κ°’μ„ ν• λ‹Ήν•˜κ³ , μ½˜μ†”μ°½μ— λ„μ–΄λ΄…μ‹œλ‹€.

```sh
I am 25 years old.
You are 30 years old.
```

πŸŽ‰ μΆ•ν•˜λ“œλ¦½λ‹ˆλ‹€ ! πŸŽ‰

[Day 2 >>](./02_Day_Data_types/02_day_data_types.md)