๐ [๊ฐ์ ๋ด์ฉ ๋ฐ ๊ฐ๋
์ ๋ฆฌ]
๋ชฉ์ฐจ
- ์๋ฐ์คํฌ๋ฆฝํธ๋?
- ํ์
- ๋ณ์
- ์ฐ์ฐ์
- 2023.04.18 ๋ฆฌ๋ทฐ
[์๋ฐ์คํฌ๋ฆฝํธ๋?]
์๋ฐ์คํฌ๋ฆฝํธ์ ์ฅ์
- ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๊ณ ๊ธฐ๋ณธ ์ธ์ด๋ก ์ฌ์ฉ๋จ
- DOM ์กฐ์์ ํตํด ์ธํฐ๋ํฐ๋ธํ ์น์ ๋ง๋ค ์ ์์
"Java Script?" No! "Javascript"
์๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ ๊ด๋ จ์ด ์์๊น?
์ ๋ต์ "์๋ค"์ด๋ค.
์ง๊ธ๋ ์ ๋ช
ํ์ง๋ง ๊ทธ ๋น์ ๋ง์ด ์ฐ์๋ ์๋ฐ ์ธ์ด์ ์ํฅ๋ ฅ์ ํ๋ณด๋ก์ ์ฌ์ฉํ๊ธฐ ์ํจ์ด๋ผ๊ณ ํ๋ค.
(์ฌ๋ด: ์๋ฐ ๊ฐ๋ฐ์์๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ "Java Script"๋ผ๊ณ ํ๋ฉด ๋งค์ฐ ๋์ํ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค๐คญ)
์๋ฐ์คํฌ๋ฆฝํธ ์์ง
- V8: Chrome๊ณผ Opera์์ ์ฐ์
- SpiderMonkey - Firefox์์ ์ฐ์
- Trident ๋๋ Chakra: IE์์ ์ฐ์
- ChakraCore: Microsoft Edge์์ ์ฐ์
- SquirrelFish: Saffari์์ ์ฐ์
์๋ฅผ ๋ค์ด, "V8์์๋ง ์ง์ํ๋ ๊ธฐ๋ฅ"์ด๋ผ๊ณ ํ๋ฉด chrome๊ณผ opera์์ ๋ฐ์ ์์ฐ์ด๋ฏ๋ก ์์ง ์ข
๋ฅ๋ฅผ ๊ธฐ์ตํ๋ฉด ์ข๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ก ํธ๋์คํ์ผํ ์ ์๋ ์ธ์ด๋ค
- Typescript: ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์
์ ๋ช
์ํ๋๋ก ํ ์ธ์ด by Microsoft
- Flow: ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ฃํ์ ๋ช
์ํ๋๋ก ํ ์ธ์ด by Facebook
- CoffeScript: ์งง์ ๋ฌธ๋ฒ๊ณผ ์ฌ์ด ์ฝ๋๋ก ์์ฑํ๋๋ก ํ ์ธ์ด (Ruby ๊ฐ๋ฐ์๋ค์ด ์ข์ํ๋ค๊ณ ํฉ๋๋ค!)
- Dart: ๊ณ ์ ์ ์์ง์ ๊ฐ์ง ๋
์์ ์ธ์ด์ด๋ฉฐ ์น๊ณผ ์ฑ ๊ฐ๋ฐ์ ์ฌ์ฉํ ์ ์์ด ์ธ๊ธฐ๊ฐ ๋ง์ ์ธ์ด by Google
[์ฝ๋ ์๋ํฐ]
- StackBlitz
์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ํด๋ผ์ฐ๋ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ
- Visual Studio Code
- Webstrom
ํ์
์์ ํ์
์ ๋ชจ๋ ํ๋์ ๊ฐ์ ๋ด๊ณ ์์
- ์) ๋ฌธ์, ์ซ์, null, symbol โฆ
์ฐธ์กฐ ํ์
์ ๋ณ์์ ํ ๋นํ ๋์๋ ๊ฐ์ด ์๋ '์ฃผ์'๋ฅผ ์ ์ฅ
- ์) ๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์
- ๋ณ์๋ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ , ์ฃผ์๋ ํน๋ณํ ๋์ ์ธ ๋ฐ์ดํฐ ๋ณด๊ดํจ์ ๋ณด๊ด๋๋๋ฐ ์ด ๋ฐ์ดํฐ ๋ณด๊ดํจ์ย
๋ฉ๋ชจ๋ฆฌ ํ
ย ์ด๋ผ๊ณ ํฉ๋๋ค.
- ๊ฐ์ ์ฌํ ๋น ํ ๊ฒฝ์ฐ ์ฃผ์๋ ์ฐธ์กฐํ ๋ชจ๋ ๊ฐ์ด ์ํฅ์ ๋ฐ์ต๋๋ค. ์ฆ, ๊ฐ์ด ๊ณต์ ๋ฉ๋๋ค.
React์ hook ์ค ํ๋์ธ useEffect์์ ์ฐธ์กฐ ํ์
์ธ dependency์ ๋ณํ๋ฅผ ๊ฐ์งํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
useEffect dependency์ ๋ค์ด๊ฐ ๋ณ์ ํ์
์์ ์ ) moment() ์ฆ, ํ์
์ด objectOf(moment)
-> ์ฐธ์กฐํ์
๋ณ์๋ก date๊ฐ ์์ ๋์ด๋ useEffect๊ฐ ๊ฐ์งํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์
์์ ํ) moment().format(โYYYY-MM-DDโ) ์ฆ, ํ์
์ด string
-> ์์ํ์
๋ณ์๋ก date ์์ ์ useEffect๊ฐ ์ ํํ ๊ฐ์งํจ
์ฐธ๊ณ ) 1.1 + 0.1์ 1.2๊ฐ ์๋๋ค?
์ ํ๋ธ ์ฝ๋ฉ์ ํ ์ฑ๋ - ์ ์์์ด ํ๋ฆฐ ์ด์ ๋? (๊ฐ๋ฐ์ ๋ฉด์ ํ์)
์ซ์ํ
- ์ ์ ๋ฐ ๋ถ๋ ์์์ ์ซ์
- ํน๋ณ ์ซ์ ๊ฐ:
Infinity
, -Infinity
, NaN
1/0
์ ๋ฌดํ๋(Infinity)๋ฅผ ์๋ฏธ
- BigInt:
(253-1)(9007199254740991)
๋ณด๋ค ํฐ ๊ฐ ํน์ -(253-1)
๋ณด๋ค ์์ ์ ์๋ฅผ ํํํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
๋ฌธ์ํ
๋ถ๋ฆฐํ
// ๋ํ์ ์ธ falsy ๊ฐ
false
0
-0
0n
// ๋น ๋ฌธ์์ด
null
undefined
NaN
- ์ฃผ์์ฌํญ:
[]
, {}
์ฒ๋ผ ์ฐธ์กฐํ์
์ ๋น ๊ฐ์ true
null ๊ฐ
undefined ๊ฐ
๊ฐ์ฒด์ ์ฌ๋ณผ
typeof ์ฐ์ฐ์
- ์ธ์์ ์๋ฃํ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํ
typeof null
์ object
(ํ์ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํด๋น ๋ถ๋ถ ์ ์ง๋จ)
ํ๋ณํ
- ๋ฌธ์ํ์ผ๋ก ๋ณํ
String(value)
- ์ซ์ํ์ผ๋ก ๋ณํ
Number(value)
- ๋ถ๋ฆฐํ์ผ๋ก ๋ณํ
Boolean(value)
๋ณ์
let๊ณผ const
- let: ๋ณ์ ์ฌํ ๋น์ด ๊ฐ๋ฅ
- const: ๋ณ์ ์ฌํ ๋น์ด ๋ถ๊ฐ๋ฅํ ์์
๋ณ์ ๋ช
๋ช
๊ท์น
- ๋ณ์๋ช
์ ์ธ ์ ์๋ ๋ฌธ์: ๋ฌธ์์ ์ซ์, ๊ทธ๋ฆฌ๊ณ ๊ธฐํธ $์ ๊ธฐํธ _
- ์ซ์๋ก ๋ณ์๋ช
์์ํ ์ ์์
- ๋/์๋ฌธ์ ๊ตฌ๋ณ
- ์์ฝ์ด๋ ๋ณ์๋ช
์ผ๋ก ์ฌ์ฉ ๋ถ๊ฐ
- ๋๋ฌธ์ ์์๋ ํ๋ก์ ํธ ์ ๋ฐ์ ์ผ๋ก ์ฐ์ผ ์์๋ฅผ ์ ์ธํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ์ปจ๋ฒค์
- ex.
const DEFAULT_COLOR = "#ff2222";
- ๋ชจ๋ ์ธ์ด๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง ์์ด๋ก ์ ์ธํ๋ ๊ฒ์ ๊ถ์ฅ
์ฐ์ฐ์
์ฐ์ฐ์ ์ฐ์ ์์
๊ธฐ๋ณธ ์ฐ์ฐ์
ํ ๋น ์ฐ์ฐ์ ์ฒด์ด๋
let a, b, c;
a = b = c = 2 + 2;
๋ณตํฉ ํ ๋น ์ฐ์ฐ์
let a = 1;
a += 1; // 2
์ฆ๊ฐ/๊ฐ์ ์ฐ์ฐ์
let a = 1;
let b = ++a;
console.log(b); // 2
let c = 1;
let d = c++;
console.log(d); // 1
// ํ์ํ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ์ด ์ฆ๊ฐ๋๊ธด ํ์ง๋ง, ์ฆ๊ฐ ์ ๊ธฐ์กด ๊ฐ์ ๋ฐํํจ
๋นํธ ์ฐ์ฐ์
์ฃผ๋ก 2์ง์์์ ์ฌ์ฉ
- ๋นํธ AND ( & )
- ๋นํธ OR ( | )
- ๋นํธ XOR ( ^ )
- ๋นํธ NOT ( ~ )
- ์ผ์ชฝ ์ํํธ(LEFT SHIFT) ( << )
- ์ค๋ฅธ์ชฝ ์ํํธ(RIGHT SHIFT) ( >> )
- ๋ถํธ ์๋ ์ค๋ฅธ์ชฝ ์ํํธ(ZERO-FILL RIGHT SHIFT) ( >>> )
์ผํ ์ฐ์ฐ์
๋ง์ง๋ง ํํ ์์ ๊ฐ๋ง ๋ฐํ๋จ
let a = (1+2, 3+4);
console.log(a); // 7
๋น๊ต ์ฐ์ฐ์
์ฃผ์์ฌํญ: ๋น๊ตํ๋ ค๋ ๊ฐ์ ์๋ฃํ์ด ๋ค๋ฅด๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด ๊ฐ๋ค์ ์ซ์ํ์ผ๋ก ๋ฐ๊ฟ ๋น๊ต
์ผ์น ์ฐ์ฐ์
null์ด๋ undefined
alert( null === undefined ); // false
alert( null == undefined ); // true
null๊ณผ 0
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true
[2023.04.18 ๋ฆฌ๋ทฐ]
์ค๋์ ์์ผ๋ก ๊ณต๋ถํ ๋ ์๊ฐ ๋ฐฐ๋ถ์ ์ ํด์ผ๊ฒ ๋ค๋ ๋ฐ์ฑ์ ํ๊ฒ ๋๋ ๋ ์ด์๋ค.
๋์ณค๋ ๊ฐ๋
๋ค์ ์์ฃผ๋ก ๋น ๋ฅด๊ฒ ํ์ธํ๊ณ ์ฌํ ๊ณต๋ถ ๋๋ ๊ณผ์ ๋ฅผ ํด์ผ๊ฒ ๋ค.