<์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ๋ฉด์ Hello World์ถ๋ ฅํ๊ธฐ>
- VSC ์คํ
- console.log('Hello World!'); ์
๋ ฅ
- ํ์ผ์ด๋ฆ: " main.js "
- ํด๋น ํด๋ ์ฐํด๋ฆญ -> Git Bash here -> node main.js ์น๋ฉด Hello World! ๋ผ๊ณ ๋ฌ๋ค.
* IDE(Integrated Development Environment) : ํจ์จ์ ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ํตํฉ๊ฐ๋ฐํ๊ฒฝ ์ํํธ์จ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค์ด๋ค. : ํ๋ง๋๋ก ๊ฐ๋ฐ๋๊ตฌ(ex. VSC) * console API : ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ ํจ์. [ ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต์์ฌ์ดํธ ] : developer.mozilla.org (์ถ์ฒ) |
console.log()
- console.log() ๋ฉ์๋๋ "์น ์ฝ์์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค." ๋ฅผ ์๋ฏธ.
- ์ฝ์ ์คํ ์ฐฝ : ctrl + shift + I
์ด๋ฐ ์์ผ๋ก alert API๋ ๋ณผ ์ ์๋ค.
- ๊ทธ๋ฅ hello ๋ผ๊ณ ์ณค์ ๋, hello๊ฐ ์ ์๋์ด ์์ง ์์์ ์๋ฌ๊ฐ ๋ฌ๋ค. ๋ฐ๋ผ์ set/var ์ ์ฌ์ฉํด hello๋ฅผ ์ ์ํ๊ณ (set hello;) hello = 10; ์ด๋ผ๊ณ ํ ๋น(๋ฐฐ์ )ํ ํ ๊ทธ ๋ค์์ hello; ๋ง ์ ์ด๋ 10 ์ด๋ผ๋ ๊ฐ์ด ๋์ค๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
< async VS defer >
- head ์์ script๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์๋ค์๊ฒ ์ด๋ป๊ฒ ๋ณด์ฌ์ง๋ ๊ฒ์ผ๊น?
parsing HTML : HTML ํ์ผ ๋ค์ด fetching js : js ํ์ผ ๋ค์ด executing js : js ํ์ผ ์คํ |
โผ
โผ
01. parsing HTML โถ blocked(fetching js → executing js) โถ parsing HTML
: <head> ์์ <script> ํฌํจ
parsing HTML | blocked | parsing HTML | |
fetching js | executing js |
1.parsing HTML
: ์ฌ์ฉ์๊ฐ HTMLํ์ผ ๋ค์ด -> ๋ธ๋ผ์ฐ์ ๊ฐ ํ ์ค์ฉ ๋ถ์(CSS์์์ ๊ฒฐํฉ)
โผ
2. blocked
: scriptํ๊ทธ ๋ฐ๊ฒฌ์ ๋ถ์์ ์ ์ ๋ฉ์ถค. -> ํ์ํ JSํ์ผ์ ์๋ฒ์์ ๋ค์ด(fetching js) ๋ฐ์ ์คํ(executing js)
โผ
3.parsing HTML
: ๋ค์ ๋ถ์
===> ๋จ์ : ์ด๋ ๊ฒ ํ๋ฉด ํ์ผ ์ฉ๋ ์ปค์ง๊ณ ์ธํฐ๋ท ๋๋ ค์ง ์ ์์. ๋ฐ๋ผ์ <head>์ <script>๋ฅผ ํฌํจํ๋ ๊ฑด X.
02. parsing HTML โถ fetching js โถ executing js
: <body>์ ์ ์ผ ๋๋ถ๋ถ์ <script> ๋ฃ๊ธฐ.
parsing HTML | fetching js | excuting js |
===> ๋จ์ : ์น์ฌ์ดํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์กด์ ์ด๋ฉด ์ฌ์ฉ์๊ฐ ์ ์์ ์ธ ํ์ด์ง ๋ณด๊ธฐ ์ ๊น์ง fetching ์๊ฐ, executing์๊ฐ๊น์ง ๊ธฐ๋ค๋ ค์ผํจ.
03. parsing HTML โถ main.jsํ์ผ ์คํ ๋ช ๋ น โถ parsing โถ executing js(blocked) โถ parsing HTML head + async
: head ์์ <script>์ด์ฉํ๋ asyn ์์ฑ ์ด์ฉํ๊ธฐ
: asyn : ๋ถ๋ฆฌ์ธํ์
์์ฑ
: ์ ์ธํ๋ ๊ฒ๋ง์ผ๋ก๋ true๋ก ์ค์ ๋จ.
parsing HTML | blocked | parsing HTML |
fetching js | executing js |
-HTML ํ์ผ ๋ค์ด → asyc ๋ฐ๊ฒฌํ๋ฉด ๋ณ๋ ฌ๋ก main.jsํ์ผ ๋ค์ด → ๋ค์ parsing → main.js๊ฐ ๋ค์ด๋ก๋ ์๋ฃ๋๋ฉด ๊ทธ๋ parsing๋ฉ์ถ๊ณ ๋ค์ด๋ก๋๋ main.jsํ์ผ์ ์คํํ๊ฒ๋จ.
===> ์ฅ์ : <body> ๋์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค fetching ์ด parsingํ๋๋์ ๋ณ๋ ฌ์ ์ผ๋ก ์ผ์ด๋๊ธฐ๋๋ฌธ์ ๋ค์ด ์๊ฐ ์ ์ฝ ๊ฐ๋ฅ
===> ๋จ์ : parsing ๋๊ธฐ ์ ์ ์คํ๋๊ธฐ ๋๋ฌธ์ jsํ์ผ์์ ์กฐ์ํ๋ ค๋ ์์ ์ HTML์์ ์ํ๋ ์์๊ฐ ์์ง ์ ์X ์ ์์
===> HTML์ด parsing๋๋ ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ์คํํ๊ธฐ์ํด ๋ฉ์ถ์๋์์. ํ์ด์ง๋ฅผ ๋ณด๊ธฐ ์ํด ์๊ฐ์ด ๋ ๊ฑธ๋ฆด ์ ์๋ค.
===>
<script async src="a.js"></script>
<script async src="b.js"></script>
<script async src="c.js"></script>
-jsํ์ผ์ด 3๊ฐ๋ผ๋ฉด, ์ ์๋ ์คํฌ๋ฆฝํธ ์์์ ์๊ด์์ด ๋ค์ด๋ก๋ ๋จผ์ ๋ ๊ฒ์ ์คํํ๊ธฐ ๋๋ฌธ์ ์์์ ์์กดํ๋ ๊ฒ์ด๋ผ๋ฉด asyc์ด์ฉ ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
04. HTML parsing โถ <script defer> ๋ฐ๊ฒฌ, ๋ค์ด ๋ช ๋ น โถ ๋๋จธ์ง HTML parsing โถ executing js(jsํ์ผ ์คํ)
: head + defer
- head ์์ script ์ฐ๊ณ defer์ต์
๋ฃ๊ธฐ
- HTML parsing์ ๋จผ์ ํด์ ์ฌ์ฉ์์๊ฒ ํ์ด์ง๋ฅผ ๋ณด์ฌ ์ค ํ js๋ฅผ ์คํ.
===> ์ฅ์ :
<script defer src="a.js"></script>
<script defer src="b.js"></script>
<script defer src="c.js"></script>
- jsํ์ผ์ด 3๊ฐ๋ผ๋ฉด, parsingํ๋ ๋์ js๋ฅผ ๋ฐ์๋์ ๋ค์, ์์๋๋ก ์คํํ๊ธฐ ๋๋ฌธ์ ์ํ๋๋๋ก script ์คํ๋๋ค.
๋ฐ๋ผ์ defer์ ์ฐ๋ ๊ฒ์ด ํจ์จ์ , ์์ ์ !!
์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉ์,
์ ์ผ ์๋ถ๋ถ์
'use strict';
์ ์ํ๋ฉด ์ข์. type script ์ธ๋ ์ ์ธํ ํ์๊ฐ ์์ง๋ง, ์์ Valina ์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉํ ๋ ์จ์ผํ๋ค.
-์ด์ : Brenden ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด ๋ง๋ค ๋ ๋นจ๋ฆฌ ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์, ์ ์ฐํ ์ธ์ด๋ก ๋ง๋ค์ด์ก๋ค. ์ ์ฐํ๋ค๋ ๊ฒ์ ๋๋ก ์์ฃผ ์ํํ ๊ฒ. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ๋ง์ ์ค์๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ ์ธ๋์ง ์์ ๋ณ์์ ๊ฐ์ ํ ๋นํ๋ค๋์ง ๊ธฐ์กด์ ์กด์ฌํ๋ ํ๋กํ ํ์
์ ๋ณ๊ฒฝํ๋ค๋์ง ์ด๋ฐ ๋น์์์ ์ธ ๊ฒ๋ค์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ๊ณต๋ถํ ๊ฐ๋ฐ์๋ค์ด ๋ดค์ ๋ ๋ฏธ์น๋ฏํ ํ๋๋ค์. ๋คํํ use strict๋ ECMAScript์ ์ถ๊ฐ๋ผ์์. ์ด๊ฑธ ์ฐ๋ฉด ๋ ์ด์ ๋น์์์ ์ธ ๊ฒ๋ค์ ์ธ ์ ์๊ฒ๋จ.
์์:
1. use strict ์ฌ์ฉX
console.log('Hello Wolrd');
a=6
===>๋ธ๋ผ์ฐ์ ์์๋ ๋ฌธ์ X.
2. use strict ์ฌ์ฉO
'use strict';
console.log('Hello Wolrd');
a=6
===>console์์ ์๋ฌ๋ฐ์(a๋ ์ ๋ฆฌ๋ผ์์ง ์๋ค). ๋ฐ๋ผ์
'use strict';
console.log('Hello Wolrd');
let a;
a=6
===>let a; ๋ผ๊ณ ์ ์ธํ๋ฉด ๋ฌธ์ ์๋ค.
ํ์ผ ์ ์ผ ์์ use strcit์ฌ์ฉํด์ strcit๋ชจ๋๋ก ๊ฐ๋ฐํ๋ ๊ฑธ ์ถ์ฒํ๋ค. ํจ์จ์ , ๋ ๋น ๋ฅธ ๋ถ์ ๊ฐ๋ฅ.
'๐Development > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] operator(์ฐ์ฐ์), if, switch, for loops ์ฝ๋ (0) | 2023.03.13 |
---|---|
[JS] ๋ฐ์ดํฐํ์ , data types, ๋ณ์ ์ ์ธ let vs var, hoisting (1) | 2023.03.12 |
[JS] JavaScript์ ์ญ์ฌ, ํ์ฌ ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ (0) | 2023.03.11 |
[JS] UI vs API & ๋ง๋ฌด๋ฆฌ (0) | 2023.03.06 |
[JS] ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ (0) | 2023.03.06 |