2025. 8. 11. 23:15ใFront-end/JavaScript

๋ชฉ์ฐจ
1. ๊ตฌ๋ฌธ
1-1. ๊ตฌ๋ฌธ (Syntax)
1-2. ํํ์ (Expression)
1-3. ๋ฌธ (Statement)
1-4. ํํ์๊ณผ ๋ฌธ
2. ์ฐ์ฐ์ (Operator)
1. ๊ตฌ๋ฌธ
1. ๊ตฌ๋ฌธ (Syntax)
์ธ์ด๊ฐ ์๋ํ๋ ๊ท์น์ ์ ์ํ๋ฉฐ, ๋ฌธ๋ฒ์ ๋ฐ๋ผ ์์ฑํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ์ค์ํ ๊ตฌ์ฑ ์์๋ก ํํ์, ๋ฌธ, ์ฐ์ฐ์๊ฐ ์๋ค.
2. ํํ์ (Expression)
๊ฐ์ผ๋ก ํ๊ฐ๋๋ ๊ตฌ๋ฌธ์ผ๋ก ๋ฌธ์, ์ซ์, ํ ๋น ํํ์, ๋ณตํฉ ํํ์์ด ํฌํจ๋๋ค.
'javascript' // ๋ฌธ์
3 // ์ซ์
a = 1 // ํ ๋น ํํ์
x + y; // ๋ณตํฉ ํํ์
- ํ ๋น ํํ์ : ๋ณ์๋ฅผ ์ ์ธํ๊ณ , ๊ฐ์ ๋์ ํ๋ ํํ์
- ๋ณตํฉ ํํ์ : ์ฌ๋ฌ ๊ฐ์ ๋จ์ผ ํํ์์ ์ฐ์ฐ์, ํจ์ ํธ์ถ ๋ฑ์ผ๋ก ๊ฒฐํฉํ ๊ฒ
3. ๋ฌธ (Statement)
์ผ์ข ์ ์ง์๋ฅผ ๋ด๋ฆฌ๋ ๊ฒ์ผ๋ก, ํํ์์ด ๊ฐ์ ๊ฒฐ๊ณผ๋ก ๊ฐ์ ธ์จ๋ค๋ฉด, ๋ฌธ์ ํํ์์ด๋ ๋ค๋ฅธ ๋ฌธ์ ์กฐํฉํด ๋์์ ์ํํ๋ ์ง์๋ฅผ ๋ด๋ฆฐ๋ค.
let a; // ํํ์
if(true){ a='1' } // ๋ฌธ
๋ฌธ์ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋ค.
var a = 1; // ์ ์ธ๋ฌธ
if(a) { alert('์กฐ๊ฑด๋ฌธ'); } // ์กฐ๊ฑด๋ฌธ
while(a) { alert('๋ฐ๋ณต๋ฌธ'); } // ๋ฐ๋ณต๋ฌธ
function doSomething() { return 'foo'; }
console.log(doSomething()); // ์ ํ๋ฌธ
4. ํํ์๊ณผ ๋ฌธ
ํํ์๊ณผ ๋ฌธ์ ์ ๋ฆฌํ๋ค๋ณด๋ ํท๊ฐ๋ ค์ ์ด๋ป๊ฒ ๊ตฌ๋ถํ๋ ์ง ์์๋ดค๋ค.
์์๋ณด๋ค๋ณด๋ ์์ด ์ข ๋ง์์ ธ์ ๊ธ์ ๋ฐ๋ก ๋ง๋ค์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํํ์๊ณผ ๋ฌธ์ ๊ตฌ๋ถํ๋ ๋ฒ >>
2. ์ฐ์ฐ์ (Operator)
1. ์ฐ์ ์ฐ์ฐ์
์ซ์ ์ฐ์ฐ์ ํ์ํ ์ฐ์ฐ์๋ค์ด๋ค.
| ์ฐ์ฐ์ | ์ํ ์ฐ์ฐ | ํผ์ฐ์ฐ์ ๊ฐ์ | ๊ฒฐํฉ ๋ฐฉํฅ | ์์ | ๊ฒฐ๊ณผ |
| + | ๋ง์ | 2 | ์ข โข ์ฐ | 1 + 2 | 3 |
| - | ๋บ์ | 2 | ์ข โข ์ฐ | 2 - 1 | 1 |
| * | ๊ณฑ์ | 2 | ์ข โข ์ฐ | 1 * 2 | 2 |
| / | ๋๋์ | 2 | ์ข โข ์ฐ | 4 / 2 | 2 |
| % | ๋๋จธ์ง | 2 | ์ข โข ์ฐ | 5 % 2 | 3 |
| ++ | ์ ์น, ํ์น ์ฆ๊ฐ(๋จํญ ์ฐ์ฐ) | 1 | ์ฐ โข ์ข, ์ข โข ์ฐ |
const a = 1; ++a, a++ |
2, 1 |
| -- | ์ ์น, ํ์น ๊ฐ์(๋จํญ ์ฐ์ฐ) | 1 | ์ฐ โข ์ข, ์ข โข ์ฐ |
const a = 1; --a, a-- |
0, 1 |
| + ๋จํญ | ํผ์ฐ์ฐ์ ๊ฐ์ ์ซ์๋ก ๋ณํ | 1 | ์ฐ โข ์ข | const a = '1'; +a | 1 |
| - ๋จํญ | ํผ์ฐ์ฐ์ ๊ฐ์ ๋ถํธ๋ฅผ ๋ณ๊ฒฝ | 1 | ์ฐ โข ์ข | const a = 1; -a | -1 |
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋๋ถ๋ถ์ ํํ์์ ๋ถ์ ํจ๊ณผ๊ฐ ์์ผ๋, ์ ์น/ํ์น/์ฆ๊ฐ ์ฐ์ฐ์๋ ๋ถ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ค.

- console.log(a, b); → ํ์น ์ฐ์ฐ
⋅ a๋ ์ฆ๊ฐ ํ ๊ฐ์ธ 2๋ฅผ ์ถ๋ ฅ
⋅ b๋ ์ฆ๊ฐ ์ ๊ฐ์ธ 1์ ์ถ๋ ฅ - console.log(a, c); → ์ ์น ์ฐ์ฐ
⋅ a๋ ๋ ์ฆ๊ฐํ์ฌ 3์ ์ถ๋ ฅ
⋅ c๋ ์ฆ๊ฐ ํ ๊ฐ์ธ 3์ ์ถ๋ ฅ
2. ๋ ผ๋ฆฌ ์ฐ์ฐ์
๋ ผ๋ฆฌ ์ฐ์ฐ์ &&, ||, ! ๋ ๋ณดํต ๋ถ๋ฆฐ๊ฐ์ ์ด์ฉํด ์ฐ์ฐ์ ์ํํ๋ฉฐ, ๊ฒฐ๊ณผ๊ฐ๋ ๋ถ๋ฆฐ๊ฐ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ชจ๋ ๊ฐ์ด ํผ์ฐ์ฐ์๊ฐ ๋ ์ ์์ผ๋ฉฐ, ๊ฒฐ๊ณผ๊ฐ๋ ๋ ์ ์๋ค.
→ ์ด ๊ฒฝ์ฐ, truthy๊ฐ๊ณผ falsy๊ฐ์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํ๋ค.
| truthy | falsy ์ธ์ ๋ชจ๋ ๊ฐ (๋น ๋ฐฐ์ด๊ณผ ๋น ๊ฐ์ฒด ํฌํจ) |
| falsy | ๋น ๋ฌธ์์ด (''), null, 0, undefined, On, NaN |
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ค ์ฐ์ ์์๋ ! > && > || ์์๋ก ์ฐ์ ์์๊ฐ ๋๋ค.
| ์ฐ์ฐ์ | ์ํ ์ฐ์ฐ | ํผ์ฐ์ฐ์ ๊ฐ์ | ๊ฒฐํฉ ๋ฐฉํฅ | ์์ |
| && | ๋ ผ๋ฆฌ AND | 2 | ์ข → ์ฐ | x && y > z |
| || | ๋ ผ๋ฆฌ OR | 2 | ์ข → ์ฐ | x || y > z |
| ! | ๋ ผ๋ฆฌ NOT | 1 | ์ฐ → ์ข | !x |
!!
NOT ์ฐ์ฐ์๋ฅผ ์ฐ์ํด์ ์ฌ์ฉํ๋ฉด ๋ถ๋ฆฐํ์ด ์๋ ๊ฐ์ ๋ถ๋ฆฐํ์ผ๋ก ๋ณํํ๋ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
๋จ๋ฝ ํ๊ฐ (Short Circuit)
AND ์ฐ์ฐ์์ OR ์ฐ์ฐ์๋ ์ฐ๋ฌ์์ ์์ฑํ๋ Chaining์ ํ ์ ์๋ค.
์ด ๋ ์์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๊ฐ ๊ฑฐ์ง, ์ฐธ์ด๋ผ๋ฉด ๋ค์ ์ฐ์ฐ์ ํ๊ฐํ์ง ์๊ณ ๊ทธ๋๋ก false, true๋ฅผ ๋ฐํํ๋ฉฐ ๋ฌธ์ ๋๋ธ๋ค.
์ด๋ฐ ์์ผ๋ก ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ง ๋ณด๊ณ ๋ค์ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํ๋จํ์ง ์๋ ๋ฐฉ์์ ๋จ๋ฝ ํ๊ฐ๋ผ๊ณ ํ๋ค.
- ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํผ์ฐ์ฐ์๋ฅผ ๋ถ๋ฆฐํ์ผ๋ก ๋ณํํ๋ฉฐ ํ๊ฐ
- ํผ์ฐ์ฐ์์ ๋ณํ๊ฐ์ด false/true๋ฉด ์ฐ์ฐ ๋ฉ์ถ๊ณ ํด๋น ํผ์ฐ์ฐ์์ ์๋๊ฐ์ ๋ฆฌํด
- ๋ชจ๋ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํ ๊ฒฝ์ฐ, ๋ง์ง๋ง ํผ์ฐ์ฐ์๋ฅผ ๋ฆฌํด (๋ชจ๋ false/true)
3. ๊ด๊ณํ ์ฐ์ฐ์
๋ ํผ์ฐ์ฐ์์ ๊ด๊ณ๋ฅผ ๊ฒ์ฆํ ๋ ์ฌ์ฉํ๋ค.
๊ฒฐ๊ณผ๋ ํญ์ ๋ถ๋ฆฐํ ์ด๋ฉฐ, ์ฃผ๋ก ์กฐ๊ฑด๋ฌธ/๋ฐ๋ณต๋ฌธ ๋ด ์กฐ๊ฑด์ ์ ์ํ ๋ ์ฌ์ฉํ๋ค.
| ์ฐ์ฐ์ | ์ํ ์ฐ์ฐ | ํผ์ฐ์ฐ์ ๊ฐ์ | ๊ฒฐํฉ ๋ฐฉํฅ | ์์ |
| >, >=, <, <= | Number,BigInt์ ๋์ ๋น๊ต, String์ ์ํ๋ฒณ ์์ ๋น๊ต | 2 | ์ข โข ์ฐ | x >= y |
| == | ๊ฐ์ ๋๋ฑ์ ํ๋จ | 2 | ์ข โข ์ฐ | x == y |
| === | ๊ฐ์ ์ผ์น๋ฅผ ํ๋จ | 2 | ์ข โข ์ฐ | x === y |
| instanceof | ๊ฐ์ฒด์ ํด๋์ค ํ์ธ | 2 | ์ข โข ์ฐ | car instanceof Vehicle |
| in | ๊ฐ์ฒด์ ํน์ ํ๋กํผํฐ๊ฐ ์๋์ง ํ์ธ | 2 | ์ข โข ์ฐ | name in Obj |
4. ๋นํธ ์ฐ์ฐ์
์ซ์์ ๋นํธ๋ฅผ ์กฐ์ํ๋ ์ฐ์ฐ์๋ก, ํผ์ฐ์ฐ์๋ 32๋นํธ ์ ์ ํํ๋ฒ์ ๋ฐ๋ฅธ๋ค
| ์ฐ์ฐ์ | ์ํ ์ฐ์ฐ | ํผ์ฐ์ฐ์ ๊ฐ์ | ๊ฒฐํฉ ๋ฐฉํฅ | ์์ |
| & | ๋นํธ AND | 2 | ์ข โข ์ฐ | x & y |
| | | ๋นํธ OR | 2 | ์ข โข ์ฐ | x | y |
| ^ | ๋นํธ XOR | 2 | ์ข โข ์ฐ | x ^ y |
| ~ | ๋นํธ NOT | 1 | ์ข โข ์ฐ | ~x |
| << | ์ผ์ชฝ ์ํํธ | 2 | ์ข โข ์ฐ | x<<1 |
| >> | ๋ถํธ ๋นํธ ํ์ฅ ์ค๋ฅธ์ชฝ ์ํํธ | 2 | ์ข โข ์ฐ | x >> 1 |
| >>> | ๋ถํธ ๋นํธ ํ์ฅ ์๋ ์ค๋ฅธ์ชฝ ์ํํธ | 2 | ์ข โข ์ฐ | x >>>1 |
5. ์กฐ๊ฑด ์ฐ์ฐ์ (์ผํญ ์ฐ์ฐ์, ๋ฌผ์ํ ์ฐ์ฐ์)
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ์ผํ๊ฒ ํผ์ฐ์ฐ์๋ฅผ 3๊ฐ ๊ฐ์ง๋ 3ํญ ์ฐ์ฐ์๋ก, if else์ ์ถ์ฝํ์ด๋ค.
// if else ์กฐ๊ฑด๋ฌธ
if(a > 1) {
b = a;
} else {
b = 2;
}
// ์กฐ๊ฑด ์ฐ์ฐ์
b = a > 1 ? a : 2;
6. ํ ๋น ์ฐ์ฐ์
๋ณ์์ ๊ฐ์ ํ ๋นํ ๋ ์ฌ์ฉํ๋ ์ฐ์ฐ์๋ก, ์ฐ์ธก ํผ์ฐ์ฐ์์ ๊ฐ์ ์ข์ธก ๊ฐ์ ํ ๋นํ๋ค.
| ์ฐ์ฐ์ | ํํ์ | ๋๋ฑํ ํํ์ |
| += | x += y | x = x + y |
| -= | x -= y | x = x - y |
| *= | x *= y | x = x*y |
| /= | x /= y | x = x / y |
| %= | x %= y | x = x % y |
| &= | x &= y | x = x & y |
| |= | x |= y | x = x | y |
| ^= | x ^= y | x = x ^ y |
| <<= | x <<= y | x = x << y |
| >>= | x >>= y | x = x >> y |
| >>>= | x >>>= y | x = x >>> y |
| ||= | x ||= y | x = x || y |
7. ์ผํ ์ฐ์ฐ์
ํ ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง ํผ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
for (let i = 0, j = 10; i < j; i++, j--) {
...
}
8. typeof ์ฐ์ฐ์
ํผ์ฐ์ฐ์์ ํ์ ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ ๋จํญ ์ฐ์ฐ์์ด๋ค.
| ํผ์ฐ์ฐ์ ํ์ | ๊ฒฐ๊ณผ | ์์ |
| ๋ฌธ์์ด | 'string' | typeof 'javascript' |
| ์ซ์ | 'number' | typeof 1 |
| ๋ถ๋ฆฌ์ธ | 'boolean' | typeof true |
| undefined | 'undefined' | typeof undefined |
| null | 'object' | typeof null |
| ํจ์ | 'function' | typeof function(){} |
| ๊ฐ์ฒด | 'object' | typeof {} |
| ์ฌ๋ณผ | 'symbol' | typeof Symbol() |
| BigInt | 'bigint' | typeof 1n |
typeof null์ ๊ฒฐ๊ณผ๋ก object๊ฐ ๋์ค๋ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฐฝ๊ธฐ ์ค๊ณ ์ค๋ฅ๋ก ์๊ธด ๋ฒ๊ทธ๋ก, null ํ์ ์ ํ์ธํ๋ ค๋ฉด ๋๋ฑ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
const vehicle = new Vehicle();
console.log(vehicle instanceof Vehicle); //true
console.log(typeof vehicle); //'object'
9. nullish ๋ณํฉ ์ฐ์ฐ์
๋ณํฉ ์ฐ์ฐ์ ??์ผ๋ก ์ฌ๋ฌ ํผ์ฐ์ฐ์ ์ค ๊ทธ ๊ฐ์ด ํ์ ๋์ด ์๋ ๋ณ์๋ฅผ ์ฐพ์ ์ ์๋ค.
a ?? b์ ํ๊ณผ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
- a๊ฐ null๋ ์๋๊ณ undefined๋ ์๋๋ฉด a
- ๊ทธ ์ธ์ ๊ฒฝ์ฐ๋ b (a๊ฐ null || undefined)
x = (a !== null && a !== undefined) ? a : b;
a ?? b
OR ์ฐ์ฐ์์ ๋น์ทํด๋ณด์ผ ์ ์์ผ๋ null, undefined <-> ์ซ์ 0 ์ ๊ตฌ๋ถ์ง์ด์ผํ ๋ ์ฐ๊ธฐ ์ข๋ค.
let height = 0;
alert(height || 100); // 100 (0์ false๋ก ํ๋จ)
alert(height ?? 100); // 0 (์ฒ์ ๋ํ๋ defined ๊ฐ์ ๋ฐํ)
๊ฐ์ด ์กด์ฌํ์ง ์์์ผ๋ง ๋ค์ ๊ฐ์ ๋๊ธฐ๊ธฐ ๋๋ฌธ์
0์ด๋ ๋น ๋ฌธ์์ด๋ ์ ์ ๋ฐ์ดํฐ๋ผ๊ณ ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
ํน์ง
- ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ๊ฝค ๋ฎ์ผ๋ฏ๋ก, ๋ณต์กํ ํํ์์์ ์ฌ์ฉํ ๋๋ ๊ดํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ ์ข๋ค.
๋๋ค์์ ์ฐ์ฐ์๋ณด๋ค ๋ฎ๊ณ , ?์ =๋ณด๋ค๋ ๋๋ค. - ์์ ์ฑ ์ด์๋ก &&, ||์ chaningํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
let x = (1 && 2) ?? 3; ๊ณผ ๊ฐ์ด ์ธ๊ฑฐ๋ฉด ๊ดํธ๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
์ฐธ๊ณ
https://ko.javascript.info/logical-operators
๋ ผ๋ฆฌ ์ฐ์ฐ์
ko.javascript.info
https://ko.javascript.info/nullish-coalescing-operator
nullish ๋ณํฉ ์ฐ์ฐ์ '??'
ko.javascript.info
๊ธฐ์ด๋ถํฐ ์์ฑ๊น์ง, ํ๋ฐํธ์๋ - ์์ค24
๋๋์ด, ์ต์ด์ ๊ฐ๋ก ์๊ฐ ๋์์ต๋๋ค! ํ๋ฐํธ์๋์ ๊ฐ๋ ๊ณผ ์๋ฆฌ๋ฅผ ๋ชจ๋ ๋ด์ “ํ๋ฐํธ์๋์ ์ ์”์ฒซ์งธ, ๊ฐ๋ ๊ณผ ์ค์ต, ์ ์ฉ๊ณผ ํจ์จ์ ๋ชจ๋ ์ก์ ๋์! ํํํ๊ฒ ๊ฐ๋ ์ ์ก๊ณ , ๊ฐ๋ ์ ๋ฐ๋ก ์
www.yes24.com
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| JS์์ง์ด ํํ์๊ณผ ๋ฌธ์ ๊ตฌ๋ถํ๋ ๋ฒ (3) | 2025.08.12 |
|---|---|
| B7 : ์กฐ๊ฑด๋ฌธ (3) | 2025.08.12 |
| ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ (4) | 2025.08.08 |
| B4 : ์์ํ์ ํ๋ณํ (2) | 2025.08.05 |
| B3 : ๋ณ์, ์์, ์๋ฃํ (4) | 2025.08.05 |
GitHub