[JS] ์ JSX ์์์ if ๋ฌธ์ ์ฌ์ฉํ ์ ์์๊น? ํํ์๊ณผ ๋ฌธ ์ฐจ์ด์
TL;DR
๏ฟญ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ์ผ๋ จ์ ๋ฌธ(Statement)์ผ๋ก ๊ตฌ์ฑ๋๋ค
๏ฟญ ๊ฐ ๋ฌธ์ ๋ณ์ ์์ฑ, if
, else
์กฐ๊ฑด ์คํ, ๋ฃจํ ์์๊ณผ ๊ฐ์ ์์
์ ์ํํ๋ ๋ช
๋ น์ด๋ค
๏ฟญ ํํ์์ ๊ฐ์ ์์ฑํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ค → ํํ์์ ํญ์ ๊ฐ์ ์์ฑํ๋ค
๏ฟญ ๋ชจ๋ ํจ์์ ์ธ์๋ ํํ์์ด๋ค. ๋ฌธ์ ๊ฐ์ ์์ฑํ์ง ์์ผ๋ฏ๋ก ํจ์ ์ธ์์ ์ฌ์ฉํ ์ ์๋ค
๏ฟญ ๋ฌธ์ ํ๋ก๊ทธ๋จ์ ํ๋๋ก ๋ฌถ๋ ๋จ๋จํ ๊ตฌ์กฐ์ด๋ฉฐ, ๋ฌธ์ ์ธ๋ถ์ฌํญ์ ํํ์์ผ๋ก ์ฑ์์ง๋ค
๏ฟญ ํํ์์ ๋จ๋ ์ผ๋ก ์กด์ฌํ ์ ์๊ณ , ํญ์ ๋ฌธ์ ์ผ๋ถ๋ค
๏ฟญ ๋ฌธ์ ํํ์ ์ฌ๋กฏ์ ์ ์ธํ๊ณค ๋ณธ์ง์ ์ผ๋ก ๋น์ด์๋ค
๏ฟญ ๋ฌธ์ด ๋น์ด ์์ ๋๋ ํํ์์ ํญ์ ๋ฌธ์ ์ผ๋ถ๋ค
๏ฟญ JSX์ {}
์ค๊ดํธ๋ ํํ์ ์ฌ๋กฏ์ ๋ง๋ ๋ค
๏ฟญ ํํ์ ์ฌ๋กฏ์์ ๊ฐ์ ์์ฑํ์ง ์๋ ๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค
ํํ์ | Expressions
๏ฟญ ํํ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ์์ฑํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ค
๏ฟญ ์ฆ, ํํ์์ ํญ์ ๊ฐ์ ์์ฑํ๋ค
๏ฟญ ์๋ ์ฝ๋๋ ๋ชจ๋ ํํ์์ด๋ค
// ์๋ ์ฝ๋๋ ๋ชจ๋ ํํ์์ด๋ค
1 // 1 ์์ฑ
("hello") // 'hello' ์์ฑ
5 * 10 // 50 ์์ฑ
num > 100 // true | false ์์ฑ
isHappy ? "๐น๐ญ" : "๐ฐ๐ท" // ์ด๋ชจ์ง ์์ฑ
[1, 2, 3].pop() // 3 ์์ฑ
๏ฟญ ํํ์์ ํํ์์ ํฌํจํ ์ ์๋ค.
๏ฟญ (5 + 1) * 2
ํํ์ ์์ ๋ช ๊ฐ์ ํํ์์ด ์์๊น?
- ์ ์ฒด ํํ์ :
(5 + 1) * 2
→12
๋ก ํ๊ฐ - ๊ดํธ์ ๋ง์
:
(5 + 1)
→6
์ผ๋ก ํ๊ฐ - ๊ดํธ์ ์ฒซ๋ฒ์งธ ์ซ์ :
5
→5
๋ก ํ๊ฐ - ๊ดํธ์ ๋๋ฒ์งธ ์ซ์ :
1
→1
๋ก ํ๊ฐ - ๊ณฑํ๋ ์ :
2
→2
๋ก ํ๊ฐ
๋ฌธ | Statements
๏ฟญ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ์ผ๋ จ์ ๋ฌธ(Statement)์ผ๋ก ๊ตฌ์ฑ๋๋ค
๏ฟญ ๊ฐ ๋ฌธ์ ์ปดํจํฐ์๊ฒ ํน์ ์์ ์ ์ง์ํ๋ค
๏ฟญ ์๋๋ ๋ํ์ ์ธ ๋ฌธ์ ์์
let num = 5;
if (num > 10) { /* More statements here */ }
throw new Error("Something exploded!");
๏ฟญ ๋ฌธ์ ํ๋ก๊ทธ๋จ์ ํ๋๋ก ๋ฌถ๋ ๋จ๋จํ ๊ตฌ์กฐ์ด๋ฉฐ, ๋ฌธ์ ์ธ๋ถ์ฌํญ์ ํํ์์ผ๋ก ์ฑ์์ง๋ค
๏ฟญ ๋ฌธ์๋ ํํ์์ ๋ฃ์ ์ ์๋ ์ฌ๋กฏ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค
๏ฟญ ํํ์ ์ฌ๋กฏ์ ๋ชจ๋ ์ข ๋ฅ์ ํํ์์ ์ฌ์ฉํ ์ ์๋ค
๏ฟญ ๋ณ์ ์ ์ธ์๋ ํํ์ ์ฌ๋กฏ์ด ์๋ค(ํ ๋น๋ฌธ)
let hi = /* ํํ์ ์ฌ๋กฏ */;
let hi = 1;
let hi = 'hello';
let hi = 5 * 10;
let hi = num > 100;
let hi = isHappy ? "๐น๐ญ" : "๐ฐ๐ท";
let hi = [1, 2, 3].pop();
๏ฟญ ํ ๋น๋ฌธ์ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ฏ๋ก ํํ์์ธ ๋ฌธ์ด๋ค
๏ฟญ ์ ์ธ๋ฌธ์ ๊ฐ์ผ๋ก ํ๊ฐ๋์ง ์์ผ๋ฏ๋ก ํํ์์ด ์๋ ๋ฌธ์ด๋ค
๏ฟญ ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ํํ์์ด ์๋ ๋ฌธ์ ํญ์ undefined
๋ฅผ ๋ฐํํ๊ณ , ํํ์์ธ ๋ฌธ์ ํญ์ ๊ฐ์ ๋ฐํํ๋ค
let hi; // ์ ์ธ๋ฌธ | ํํ์์ด ์๋ ๋ฌธ
// undefined | ํํ์์ด ์๋ ๋ฌธ์ด๋ฏ๋ก undefined ๋ฐํ(์ถ๋ ฅ)
let hi = 1; // ํ ๋น๋ฌธ | ํํ์์ธ ๋ฌธ
// 1 | ํํ์์ธ ๋ฌธ์ด๋ฏ๋ก 1์ด๋ผ๋ ๊ฐ์ ํ๊ฐํ์ฌ 1 ๋ฐํ(์ถ๋ ฅ)
๏ฟญ ๋ฌธ์ ํํ์ ์ฌ๋กฏ์ด ์๊ณ , ์ฌ๋กฏ์ ํํ์์ ๋ฃ์ผ๋ฉด ์ฝ๋๊ฐ ์คํ๋๋ค. ๋ฌธ๋ฒ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค
๏ฟญ ํ์ง๋ง ์๋ ๊ฐ์ ์ฝ๋์์ ๋ฌธ๋ฒ ์๋ฌ๋ ์์ง๋ง ์คํํ๋ฉด ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ๋ค
while ('hello') {
// while ์กฐ๊ฑด์ ๊ดํธ๊ฐ ํํ์ ์ฌ๋กฏ์ด๋ค
// 'hello'๋ ๋ฐ๋์ง ์๋ ๊ฐ์ด๋ฏ๋ก ์คํฌ๋ฆฝํธ๊ฐ ์ถฉ๋ํ ๋๊น์ง ๊ณ์ ์คํ๋๋ค
// ๋ฌธ์ ๊ฐ ์๋ ๋ฌธ๋ฒ์ด์ง๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋(?) ์ํฉ
}
๋ฌธ / ํํ์ ํ์ธ ๋ฐฉ๋ฒ
console.log(/* Some chunk of JS here */);
๏ฟญ ํน์ ์ฝ๋ ์กฐ๊ฐ์ด ๋ฌธ / ํํ์์ธ์ง ํ์ธํ๊ณ ์ถ์ผ๋ฉด ์ฝ์ ๋ก๊ทธ๋ฅผ ํ์ฉํ์
๏ฟญ ๋ฌธ์ ์์ด ์คํ๋๋ฉด ์ ๋ ฅํ ์ฝ๋ ์กฐ๊ฐ์ ํํ์์ด๋ค
๏ฟญ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๋ฌธ ํน์ ์๋ชป๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ค
๏ฟญ ๋ธ๋ผ์ฐ์ ์ฝ์์์ ํํ์์ ์ด๋ป๊ฒ ํด์(ํ๊ฐ)ํ๋์ง ์ถ๋ ฅ๊ฐ์ ํตํด ๋ฐ๋ก ์ ์ ์๋ค
๏ฟญ ๋ชจ๋ ํจ์์ ์ธ์๋ ํํ์์ด๊ธฐ ๋๋ฌธ์ ์ ๊ฐ์ ํธ๋ฆญ์ด ๊ฐ๋ฅํ ๊ฒ
๏ฟญ ํํ์์ ๊ฐ์ ์์ฑํ๊ณ ํจ์๋ก ์ ๋ฌ๋๋ค
๏ฟญ ๋ฌธ์ ๊ฐ์ ์์ฑํ์ง ์์ผ๋ฏ๋ก ํจ์ ์ธ์์ ์ฌ์ฉํ ์ ์๋ค
ํํ์์ธ ๋ฌธ (Expressions as statements)
๏ฟญ 1 + 2 + 3
ํํ์์ ์๋ฌด ๋ด์ฉ๋ ์๋ test.js ํ์ผ์ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํด๋ณด์
๏ฟญ test.js ํ์ผ์ ๋ช ๊ฐ์ ๋ฌธ์ด ์๋๊ฑธ๊น? 0๊ฐ?
๏ฟญ ํํ์์ ๋จ๋ ์ผ๋ก ์กด์ฌํ ์ ์๋ค. ํํ์์ ํญ์ ๋ฌธ์ ์ผ๋ถ๋ค
๏ฟญ ๋ฐ๋ผ์ test.js ํ์ผ์ ์๋์ ๊ฐ์ ๋ฌธ์ด ์๋ค๊ณ ๋ณผ ์ ์๋ค
/* ํํ์ ์ฌ๋กฏ */
๏ฟญ ๋ฌธ์ ํํ์ ์ฌ๋กฏ์ ์ ์ธํ๊ณค ๋ณธ์ง์ ์ผ๋ก ๋น์ด์๋ค
๏ฟญ ๋ฌธ์ ํํ์ ์ฌ๋กฏ์ 1 + 2 + 3
ํํ์์ ์ฑ์ฐ ๋ฌธ์ด ์์ฑ๋๋ค
๏ฟญ ์๋๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๋ฌธ์ด๋ค
// ๋ฌธ 1 (ํ ๋น๋ฌธ)
let hi = /* ํํ์ ์ฌ๋กฏ */;
// ๋ฌธ 2 (์กฐ๊ฑด๋ฌธ)
if (/* ํํ์ ์ฌ๋กฏ */) { }
// ๋ฌธ 3 (๋ฆฌํด๋ฌธ)
return /* ํํ์ ์ฌ๋กฏ */;
// ๋ฌธ 4
/* ํํ์ ์ฌ๋กฏ */
๏ฟญ ํํ์๊ณผ ๋ฌธ์ ๋ณ๊ฐ๋ค. ํํ์์ด ๋ฌธ์ด๋ผ๊ณ ์ค๋ช ํ๋๊ฑด ์๋ชป๋ ๊ฒ
๏ฟญ ์์ฒ๋ผ ์ถ๊ฐ์ ์ธ ๋ฌธ์๋ฅผ ์ ๊ณตํ์ง ์์๋ ๋ฌธ์ ํํ์์ ๊ฐ์ ์ ์๋ค
๏ฟญ ํฌ๋ช ํ ๋น๋ ๋ฉ(๋ฌธ)์ผ๋ก ์๋์์น(ํํ์)๋ฅผ ํฌ์ฅํ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค
๏ฟญ ๋ฌธ์ ๋์ ;
์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ธ๋ค(๋ฌธ์ ์ข
๋ฃ๋ฅผ ๋ํ๋)
๏ฟญ 0๊ฐ ์ด์์ ๋ฌธ์ {}
์ค๊ดํธ๋ก ๋ฌถ์ ์ฝ๋ ๋ธ๋ก ๋ค์ ๋ถ์ด์ง ์๋๋ค(if
, while
, for
, ํจ์ ์ ์ธ
๋ฑ)
๏ฟญ ์ธ๋ฏธ์ฝ๋ก ์ ์ต์ ์ด๋ค
JSX์์ ์ค๊ดํธ โก๏ธ
๏ฟญ (React) JSX ์์์ {}
์ค๊ดํธ๋ฅผ ์ด์ฉํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์๋ค
function CountdownClock({ secondsRemaining }) {
return (
<div>
Time left:
{Math.round(secondsRemaining / 60)} minutes!
</div>
);
}
๏ฟญ ํ์ง๋ง JSX ์ค๊ดํธ {}
์์์ if
, else
๊ฐ์ ๋ฌธ(Statement)์ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค
function CountdownClock({ secondsRemaining }) {
return (
<div>
{
// ๐ซ Error!
if (secondsRemaining > 0) { `${secondsRemaining} seconds left` }
else { "Time expired!" }
}
</div>
);
}
๏ฟญ JSX์์ {}
์ค๊ดํธ๋ ํํ์ ์ฌ๋กฏ์ ๋ง๋ ๋ค
๏ฟญ ํํ์ ์ฌ๋กฏ์์ ๊ฐ์ ์์ฑํ์ง ์๋ ๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค
๏ฟญ ์ฆ, JSX {}
์ค๊ดํธ ์์์ ๊ฐ์ ์์ฑํ๋ ํํ์๋ง ์ฌ์ฉํ ์ ์๋ค
๏ฟญ ๋ฐ๋ผ์ if
, else
๋ฌธ ๋์ ์ผํญ ์ฐ์ฐ์(Ternary operator)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค
function CountdownClock({ secondsRemaining }) {
return (
<div>
{secondsRemaining > 0 // โ
OK
? `${secondsRemaining} seconds left`
: "Time expired!"}
</div>
);
}
๏ฟญ ์ผํญ ์ฐ์ฐ์๋ ์กฐ๊ฑด์ ํ๊ฐํ๊ณ ์กฐ๊ฑด์ ์ฐธ/๊ฑฐ์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ๋ ํํ์์ด๋ค
๋ ํผ๋ฐ์ค
Statements Vs. Expressions
One of the most foundational things to understand about JavaScript is that programs are made up of statements, and statements have slots for expressions. In this blog post, we'll dig into how these two structures work, and see how building an intuition abo
www.joshwcomeau.com
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[React] ๋ ธ๋์ ํธ๋ฆฌ ์์น๋ฅผ ๋ํ๋ด๋ useId ํ
[React] ๋ ธ๋์ ํธ๋ฆฌ ์์น๋ฅผ ๋ํ๋ด๋ useId ํ
2024.05.13 -
[TS] ์๋ฆฌ๋จผํธ์ ๊ธฐ๋ณธ ์ดํธ๋ฆฌ๋ทฐํธ ์ธํฐํ์ด์ค/ํ์ ์ฌ์ฉํ๊ธฐ
[TS] ์๋ฆฌ๋จผํธ์ ๊ธฐ๋ณธ ์ดํธ๋ฆฌ๋ทฐํธ ์ธํฐํ์ด์ค/ํ์ ์ฌ์ฉํ๊ธฐ
2024.05.12 -
[TS] useQuery, useMutation์ ์ ๋ค๋ฆญ ํ์ ์ดํด๋ณด๊ธฐ / Base Query ํ ๋ง๋ค๊ธฐ
[TS] useQuery, useMutation์ ์ ๋ค๋ฆญ ํ์ ์ดํด๋ณด๊ธฐ / Base Query ํ ๋ง๋ค๊ธฐ
2024.05.12 -
[React] ๋ฆฌ์กํธ ์ฟผ๋ฆฌ(React Query) staleTime์ ์ค์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ
[React] ๋ฆฌ์กํธ ์ฟผ๋ฆฌ(React Query) staleTime์ ์ค์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ
2024.05.12