๐ ์คํฐ๋ ๋ช
: ๋ชจ๋ํ -์-์๋๊ฑฐ-๋ง๋๊ฑฐ๋
๐
์คํฐ๋ 5์ฃผ์ฐจ :
2023 / 12 / 07 (๋ชฉ) PM 5:00 ~ 6:00
๐4์ฃผ์ฐจ ์คํฐ๋ ๋ชฉํ ๋ฒ์ :
๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive
08์ฅ ์ ์ด๋ฌธ (page.93 ~ page.107)
๐จ๐ปโ๐ป ์งํ ์์ :
์คํฐ๋ ๊ทธ๋ฃน์๋ค(์ด4๋ช
)๊ณผ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ ์ฃผ๊ฐ ์ฝ๊ณ ,
ํ์ตํ ๋ด์ฉ ์ ๋ฆฌ ๊ธ 1~2๋ถ๊ฐ ๋ฐํ ์งํ
์ ์ด๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํ(์กฐ๊ฑด๋ฌธ)ํ๊ฑฐ๋
๋ฐ๋ณต ์คํ(๋ฐ๋ณต๋ฌธ)ํ ๋ ์ฌ์ฉํ๋ค.
์ ์ด๋ฌธ์๋ ๋ํ์ ์ผ๋ก
์กฐ๊ฑด๋ฌธ : if..else , else if / switch
๋ฐ๋ณต๋ฌธ : for / while
break๋ฌธ , continue ๋ฌธ์ด ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ ์์์ ์๋ ๋ฐฉํฅ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค.
๊ทธ๋ฌ๋ ์ ์ด๋ฌธ์ ํ์ฉํ๋ค๋ฉด ์ฝ๋์ ์คํ ํ๋ฆ์ ์ธ์์ ์ผ๋ก ์ ์ดํ ์ ์๋ค.
ํ์ง๋ง ์ฝ๋์ ์คํ ์์๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ ๋จ์ํ ์์์ ์๋๋ก ์์ฐจ์ ์ผ๋ก ์งํํ๋ ์ง๊ด์ ์ธ ์ฝ๋์ ํ๋ฆ์ ํผ๋์ค๋ฝ๊ฒ ๋ง๋ค๊ณ ์ฝ๋์ ํ๋ฆ์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ด ๊ฐ๋
์ฑ์ ํด์น๋ ๋จ์ ์ด ์๋ค.
์ด๋ฐ ๋จ์ ์ ๋ณด์ํด์ค forEach , map ,filter,reduce๊ฐ์ ๊ณ ์ฐจ ํจ์๋ฅผ ์ฌ์ฉํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์์๋ ์ ์ด๋ฌธ์ ์ฌ์ฉ์ ์ต์ ํ์ฌ ๋ณต์ก์ฑ์ ํด๊ฒฐํ๋ ค๊ณ ๋
ธ๋ ฅํ๋ค.
if..else
<script>
if (์กฐ๊ฑด์1){
//์กฐ๊ฑด์1์ด true๋ผ๋ฉด ์ฝ๋ ๋ธ๋ก ์คํ
}else{
//์กฐ๊ฑด์1์ด ๊ฑฐ์ง์ด๋ฉด else ์ฝ๋ ๋ธ๋ก ์คํ
}
</script>
if...else๋ฌธ์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์
๋ก ๋ฐ๊ฟ ์ธ ์ ์๋ค.
<script>
// if...else๋ฌธ
let x = 2;
let result;
if(x % 2){
result = 'ํ์';
}else{
result = '์ง์';
}
console.log(result);
// ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์
// ์กฐ๊ฑด์ ? '์กฐ๊ฑด์์ด true๋ผ๋ฉด ์ด ๊ฐ์ ์ถ๋ ฅ' : '์กฐ๊ฑด์์ด false๋ผ๋ฉด ์ด ๊ฐ์ ์ถ๋ ฅ';
let x = 2;
let result = x % 2 ? 'ํ์' : '์ง์';
console.log(result);
</script>
2 ๋ฅผ 2๋ก ๋๋์์ ๋ ๋๋จธ์ง ๊ฒฐ๊ณผ ๊ฐ์ 0์ด๋ค.
0์ false๋ก ์๋ฌต์ ๊ฐ์ ๋ณํ๋๋ค.
0์ ์ง์์ ํฌํจ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ฌธ์์ด ๊ฐ ์ง์๋ฅผ ๋ฐํํด์ค๋ค.
๋ง์ฝ ๊ฒฝ์ฐ์ ์๊ฐ ์ธ๊ฐ์ง๋ผ๋ฉด ์๋ ์์ ์ฝ๋ ์ฒ๋ผ ์์ฑ์ ํ ์ ์์ต๋๋ค.
<script>
let x = 2 ;
let result = x ? (x % 2 ? 'ํ์' : '์ง์'):'์ซ์์๋';
console.log(result);// ์ง์
</script>
์ผํญ์กฐ๊ฑด์ฐ์ฐ์๋ ๋ฌธ์ด ์๋ ํํ์์ด๊ธฐ ๋๋ฌธ์ ๋ณ์์ ์ผํญ์กฐ๊ฑด์ฐ์ฐ์๋ฅผ ํ ๋น ํ ์ ์๋ค.
์กฐ๊ฑด์ ๋ฐ๋ผ ๋จ์ํ ๊ฐ์ ๊ฒฐ์ ํ์ฌ ๋ณ์์ ํ ๋น ํ๋ ๊ฒฝ์ฐ ๊ฐ๋
์ฑ์ด ์ข์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ง๋ง ์ฌ๋ฌ ์ค์ ๋ฌธ์ด ํ์ํ๋ค๋ฉด if..else๋ฅผ ์ฌ์ฉํ๋ ํธ์ด ๊ฐ๋
์ฑ์ด ์ข๋ค๊ณ ํ๋ค.
else if
<script>
if (์กฐ๊ฑด์1){
//์กฐ๊ฑด์1์ด true๋ผ๋ฉด if ์ฝ๋ ๋ธ๋ก ์คํ
}else if(์กฐ๊ฑด์2){
//์กฐ๊ฑด์1์ด false๊ณ ์กฐ๊ฑด์2๊ฐ true๋ผ๋ฉด else if ์ฝ๋ ๋ธ๋ก ์คํ
}else {
// ์กฐ๊ฑด์1, ์กฐ๊ฑด์2 ๋๋ค ๊ฑฐ์ง์ด๋ผ๋ฉด else ์ฝ๋ ๋ธ๋ก ์คํ
}
</script>
๐กelse if๋ฌธ๊ณผ else๋ฌธ์ ์ต์
์ด๋ค. ์ฆ , ์ฌ์ฉํ ์๋ ์๊ณ ์ฌ์ฉํ์ง ์์๋ ๋๋ค. if๋ฌธ๊ณผ else๋ฌธ์ 2๋ฒ ์ด์ ์ฌ์ฉํ ์ ์๊ณ else if๋ฌธ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๋ง์ฝ ์ฝ๋ ๋ธ๋ก ๋ด์ ๋ฌธ์ด ํ๋๋ฟ์ด๋ผ๋ฉด ์ค๊ดํธ๋ฅผ ์๋ต ํ ์ ์๋ค.
<script>
if (์กฐ๊ฑด์1) //์กฐ๊ฑด์1์ด true๋ผ๋ฉด if ์ฝ๋ ๋ธ๋ก ์คํ;
else if(์กฐ๊ฑด์2) //์กฐ๊ฑด์1์ด false๊ณ ์กฐ๊ฑด์2๊ฐ true๋ผ๋ฉด else if ์ฝ๋ ๋ธ๋ก ์คํ;
else // ์กฐ๊ฑด์1, ์กฐ๊ฑด์2 ๋๋ค ๊ฑฐ์ง์ด๋ผ๋ฉด else ์ฝ๋ ๋ธ๋ก ์คํ;
</script>
switch
<script>
switch (ํํ์){
case ํํ์1:
switch ๋ฌธ์ ํํ์๊ณผ ํฌํ์1์ด ์ผ์นํ๋ฉด ์คํ๋ ๋ฌธ;
break;
case ํํ์2:
switch ๋ฌธ์ ํํ์๊ณผ ํฌํ์2๊ฐ ์ผ์นํ๋ฉด ์คํ๋ ๋ฌธ;
break;
default:
switch ๋ฌธ์ ํํ์๊ณผ ์ผ์นํ๋ case๊ฐ ์์ ๋ ์คํ๋ ๋ฌธ;
}
</script>
if...else๋ฌธ์ ๋
ผ๋ฆฌ์ ์ฐธ,๊ฑฐ์ง์ผ๋ก ์คํํ ์ฝ๋ ๋ธ๋ก์ ๊ฒฐ์ ํ ๋ ์ฌ์ฉํ๋ค๋ฉด
switch๋ฌธ์ ์ฐธ,๊ฑฐ์ง๋ณด๋ค ๋ค์ํ ์ํฉ(case)์ ๋ฐ๋ผ ์คํํ ์ฝ๋ ๋ธ๋ก์ ๊ฒฐ์ ํ ๋ ์ฌ์ฉํ๋ค.
์ฃผ์ํ ์ ์ switch๋ฌธ์ break๋ฌธ์ ์ฌ์ฉํ์ง์์ผ๋ฉด ํด์ค๋ฃจ๋ผ๋ ํ์์ด ๋ฐ์ํ๋ค. ํด์ค๋ฃจ๋ ํํ์๊ณผ ๋ง๋ case๋ฅผ ์ฐพ์๋ค๊ณ ํ์ง๋ง break๋ฌธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด
break๋ฌธ์ ์ฐพ์ ๋ ๊น์ง ๊ฐ์ ์ฌ ํ ๋นํ๋ค๊ณ ํ๋ค.
ํด์ค๋ฃจ ํ์์ ๋ฐฉ์งํ๋ ค๋ฉด ์ ์์ ์ฝ๋์ฒ๋ผ case ๋ค์์ ๊ผญ break๋ฌธ์ ์ ์ธํด์ค์ผํ๋ค.
์กฐ๊ฑด์ด ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ if...else๋ณด๋ค switch๋ฌธ์ ์ฌ์ฉํ๋ํธ์ด ์ข๋ค.
๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true์ธ ๊ฒฝ์ฐ ์ฝ๋ ๋ธ๋ก์ ์คํํ๋ค.
์กฐ๊ฑด์์ด false๊ฐ ๋ ๋ ๊น์ง ์กฐ๊ฑด์์ ๋ค์ ํ๊ฐํ์ฌ ๊ณ์ํด์ true์ธ ๊ฒฝ์ฐ ์ฝ๋ ๋ธ๋ก์ ์คํํ๋ค.
๋ฐ๋ณต๋ฌธ์ for , while , do..while๋ฌธ์ ์ ๊ณตํ๋ค.
for
for๋ฌธ์ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋ ๋๊น์ง ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํ๋ค.
for๋ฌธ์ ์คํ ์์๋ฅผ ์ ํํ ์ดํดํ๋๊ฒ์ด ์ค์ํ๋ค.
<script>
for (์์; ์กฐ๊ฑด๋ฌธ; ์ฆ๊ฐ๋ฌธ){
๋ฌธ์ฅ
}
</script>
for ๋ฌธ ๋ด์ for ๋ฌธ์ ์ค์ฒฉํด ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฅผ ์ค์ฒฉfor๋ฌธ์ด๋ผ๊ณ ํ๋ค.
<script>
for (์์; ์กฐ๊ฑด๋ฌธ; ์ฆ๊ฐ๋ฌธ){
for (์์; ์กฐ๊ฑด๋ฌธ; ์ฆ๊ฐ๋ฌธ){
๋ฌธ์ฅ
}
}
</script>
while
while๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true๋ฉด ์ฝ๋ ๋ธ๋ก์ ๊ณ์ํด์ ๋ฐ๋ณต ์คํํ๋ค.
for๋ฌธ์ ํ์๊ฐ ๋ช
ํํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๊ณ while๋ฌธ์ ๋ฐ๋ณต ํ์๊ฐ ๋ถ๋ช
ํํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
while๋ฌธ์ ์กฐ๊ฑด๋ฌธ์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด ๋๋ฉด ์ฝ๋ ๋ธ๋ก์ ์คํํ์ง ์๊ณ ์ข
๋ฃํ๋ค.
๋ง์ฝ ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ๋ถ๋ฆฌ์ธ ๊ฐ์ด ์๋๋ฉด ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๊ฐ์ ๋ณํํ์ฌ ๋
ผ๋ฆฌ์ ์ฐธ,๊ฑฐ์ง์ ๊ตฌ๋ณํ๋ค.
์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ธ์ ๋ ์ฐธ์ด๋ฉด ๋ฌดํ๋ฃจํ๊ฐ ๋ฐ์ํ๋ฏ๋ก break๋ฌธ์ ์ ์ธํด์ค์ผํ๋ค.
<script>
let i = 0;
while (i < 3) { // 0, 1, 2 ์ถ๋ ฅ
console.log(i);
i++;
}
</script>
do...while
do...while๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ๋จผ์ ์คํํ๊ณ ์กฐ๊ฑด์์ ํ๊ฐํ๋ค
๋ฐ๋ผ์ ์ฝ๋ ๋ธ๋ก์ ๋ฌด์กฐ๊ฑด ์ต์ํ ํ ๋ฒ ์ด์ ์คํํ๊ณ ์ถ์ ๋ do...while๋ฌธ์ ํ์ฉํ๋ค.
<script>
var i = 0;
do {
alert(i);
i++;
} while (i < 10)
/*do..while ๋ฌธ๋ฒ์ ์กฐ๊ฑด์ด truthy ์ธ์ง ์๋์ง์ ์๊ด์์ด,
๋ณธ๋ฌธ์ ์ต์ํ ํ ๋ฒ์ด๋ผ๋ ์คํํ๊ณ ์ถ์ ๋๋ง ์ฌ์ฉํด์ผ ํ๋ค.
๋๋ค์์ ์ํฉ์์ do..while๋ณด๋ค while(โฆ) {โฆ}์ด ์ ํฉํ๋ค.*/
</script>
switch๋ฌธ๊ณผ ๊ฐ์ด while๋ฌธ ์์๋ break;
๋ฅผ ๋ฐ๋ณต๋ฌธ์ ๋ฃ์ผ๋ฉด ์ค๋จํ ์ ์๋ค.
<script>
var i = 0;
while (i < 10) {
if (i > 5) {
break;
}
alert(i);
i++;
}
</script>
0๋ถํฐ 9๊น์ง alertํด์ผํ๋๋ฐ 5๊น์ง๋ง alertํ๊ณ ์ค๋จ๋๋ค.
๋ค์์ break๊ณผ ๋น์ทํ ๊ฒ์ผ๋ก continue
๊ฐ ์๋ค.
<script>
var i = 0;
while (i < 10) {
i++;
if (i % 2 === 0) {
continue;
}
alert(i);
}
</script>
๋ฐ๋ณต๋ฌธ์ ๋๊น์ง ๋๊ธฐ๋ ํ์ง๋ง, continue๊ฐ ์์ผ๋ฉด ๊ทธ ์๋ซ๋ถ๋ถ์ ์คํํ์ง ์๊ณ ๋ค์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋์ด๊ฐ๋ค. continue๋ ๋ฐ๋ณต๋ฌธ์ ๊ณตํต๋ ์ํ ์์ ์์ ์์ธ๋ฅผ ๋๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค.
"React ์ฑ
์ ๊ตฌ๋งค ํ๋๋ฐ JS์ ํ์์ฑ์ ๋ง์ด ๋๊ผ๋ค. "
"์ด๋ฒ์ฃผ ํ ์์ผ๋ถํฐ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋๋ฐ ๋ง์ด ๋ถ์กฑํ ์ํ์ธ๊ฒ ๊ฐ์ ํฐ์ผ์ด๋ค."
"๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ ์ ์ฒด ๋๋ต 900ํ์ด์ง ์ด์์ธ๋ฐ ์ด์ 9๋ถ์1์ ์ฝ์๋ค..
์คํฐ๋ ์งํ ์ ๋ ์๋ง ์ ํด์ง ๋ฒ์ ๋ด์ฉ๋ง ์ฝ๊ณ ์์๋ค.๊ฐ์ธ์ ์ผ๋ก ๋ ์ฝ์ด๋ณด๊ณ ๋ณต์ต ๋๋์ผ๋ก ์คํฐ๋๋ฅผ ์งํํด์ผ๊ฒ ๋ค."