Achivement Goals
๐ ์กฐ๊ฑด๋ฌธ
โ truthy์ falsy ๊ฐ ์กฐ๊ฑด๋ฌธ์์ ์๋ํ๋ ๋ฐฉ์์ ์ดํดํ ์ ์๋ค.
โ ๋น๊ต์ฐ์ฐ์๋ฅผ ํตํ ์๊ฒฉํ ๋น๊ต(=== , !==)์ ๋ํด ์ดํดํ ์ ์๋ค.
โ if ์ else if , else๋ฅผ ์ดํดํ๊ณ ๋ฌด๋ฆฌ์์ด ํ์ฉํ ์ ์๋ค.
โ ๋ ผ๋ฆฌ์ฐ์ฐ์๋ฅผ (&&, ||, ! ...)์ ํตํด ๋ณต์กํ ์กฐ๊ฑด์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.
๐ ๋ฐ๋ณต๋ฌธ
โ ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ์ฌ ๋จ์ํ ๊ธฐ๋ฅ์ ๋ฐ๋ณตํ์ฌ ์ํํ ์ ์๋ค.
โ for๋ฌธ๊ณผ ๋ฌธ์์ด, ์ซ์๋ฅผ ์ด์ฉํด ๋ฐ๋ณต์ ์ผ๋ก ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์๋ค.
โ ๊ธฐ๋ณธ์ ์ธ for๋ฌธ (for (let i = 0; i < 5; i++))์ ์์ฉํ์ฌ ๋ค์ํ for๋ฌธ์ ๋ง๋ค ์ ์๋ค.
โ for์ while์ ์ฐจ์ด์ ๋ํด์ ์ค๋ช ํ ์ ์๋ค.
โ ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด๋ฌธ์ ์ ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์์๋ง ์ฝ๋๊ฐ ์คํ๋๋๋ก ํ ์ ์๋ค.
โ ์ด์ค ํฌ๋ฌธ์ด ๋ฌด์์ธ์ง ์ดํดํ๊ณ ํ์ฉํ ์ ์๋ค.
๐ ์ ์ด๋ฌธ ์ ์จ?
์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ฑฐ๋ (์กฐ๊ฑด๋ฌธ)
๋ฐ๋ณต์คํํ ๋ ์ฌ์ฉํ๋ค. (๋ฐ๋ณต๋ฌธ)
์ ์ด๋ฌธ์ ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ์คํ ํ๋ฆ์ ์ธ์์ ์ผ๋ก ์ ์ดํ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ฝ๋์ ์คํ ์์ ๋ณ๊ฒฝ์,
๋จ์ํ ์์์ ์๋๋ก ์์ฐจ์ ์ผ๋ก ์งํํ๋ ์ง๊ด์ ์ธ ์ฝ๋์ ํ๋ฆ์ ํผ๋์ค๋ฝ๊ฒ ๋ง๋ ๋ค.
๋์ค์ ์ดํด๋ณผ forEach, map, filter, reduce ๊ฐ์ ๊ณ ์ฐจ ํจ์๋
์ ์ด๋ฌธ์ ์ฌ์ฉ์ ์ต์ ํ์ฌ ์ฝ๋์ ๋ณต์ก์ฑ์ ํด๊ฒฐํ๋ ๋ฉ์๋๋ค์ด๋ค.
๐ ์ ์ด๋ฌธ ์ข ๋ฅ?
๐ ๋ธ๋ก๋ฌธ
// ๋ธ๋ก๋ฌธ
{
var foo = 10;
}
// ํจ์ ์ ์ธ๋ฌธ
function sum(a, b){
a + b;
}
๋ธ๋ก๋ฌธ์ ์ธ์ ๋ ๋ฌธ์ ์ข ๋ฅ๋ฅผ ์๋ฏธํ๋, ์์ฒด ์ข ๊ฒฐ์ฑ์ ๊ฐ๋๋ค.
๋ธ๋ก๋ฌธ์ ๋์๋ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ด์ง ์๋๋ค๋ ๊ฒ์ ์ฃผ์ํ์.
๐ ์กฐ๊ฑด๋ฌธ
โพ if...else ๋ฌธ
// if...else ๋ฌธ์ ์ ์ if / else if / else
var x = 2;
var result;
if(x % 2){
result = 'ํ์';
}else{
result = '์ง์';
}
// ์ฝ๋ ๋ด ๋ธ๋ก๋ฌธ์ด 1๊ฐ๋ฉด {} ์๋ต ๊ฐ๋ฅ
var num = 2;
var kind;
if(num > 0) kind = '์์';
else if(num < 0) kind = '์์';
else kind = '์';
// ์ผํญ ์ฐ์ฐ์ (๊ฒฝ์ฐ์ ์ 2๊ฐ์ง)
var x = 2;
var result = x % 2 ? 'ํ์' : '์ง์';
// ์ผํญ ์ฐ์ฐ์ (๊ฒฝ์ฐ์ ์ 3๊ฐ์ง)
var num = 2;
var kind = num ? (num > 0 ? '์์' : '์์') : '์';
์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ ํํ์์ ๊ฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ณ์์ ํ ๋นํ ์ ์๋ค.
ํ์ง๋ง, if else ๋ฌธ์ ํํ์์ด ์๋ ๋ฌธ์ด๋ค. ์ฆ, if else ๋ฌธ์ ๋ณ์์ ํ ๋ฌํ ์ ์๋ค.
โพ switch ๋ฌธ
var year = 2000;
var month = 2;
var days = 0;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
case 2:
days = ((year % 4 === 0 && year % 100 !== 0) || (year % 400)) ? 29 : 28;
break;
default:
console.log('Invalid month');
}
console.log(days);
์กฐ๊ฑด๋ฌธ์ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ๋ฉด์ ์ต์ํด์ ธ์ผ ํ๋ค. ์ผ์ด์ค๋ค์ ์ต๋ํ ๋ง์ด ์ ํด๋ณด์.
๐ ๋ฐ๋ณต๋ฌธ
โพ for ๋ฌธ
// for๋ฌธ์ ์ ์
for (var i = 0; i N 2; i++){
console.log(i);
}
// ๋ฌดํ ๋ฃจํ
for(;;){...}
// ์ด์ค for๋ฌธ
for(var i = 1; i <= 6; i++){
for(var j = 1; j <= 6; j++){
if(i + j === 6) console.log(`[${i},${j}]`);
}
}
/**
* [1, 5]
* [2, 4]
* [3, 3]
* [4, 2]
* [5, 1]
**/
โพ while ๋ฌธ
// while๋ฌธ์ ์ ์
var count = 0;
while(count < 3){
console.log(count);
count++; // for๋ฌธ๊ณผ ๋ค๋ฅด๊ฒ while๋ฌธ ๋ด๋ถ์์ ์กฐ๊ฑด์ ์ฆ๊ฐํด๋ฒ๋ฆผ
}
// for(๋ณ์ ์ ์ธ๋ฌธ or ๋ณ์ ํ ๋น๋ฌธ; ์กฐ๊ฑด์; ์ฆ๊ฐ์)
// while(์กฐ๊ฑด์){์ฆ๊ฐ์}
// ๋ฌดํ ๋ฃจํ
while(true){...}
// ๋ฌดํ ๋ฃจํ ํ์ถ break
var count = 0;
while(true){
console.log(count);
count++;
if(count === 3) break;
}
โพ do...while ๋ฌธ
// ๊ทธ๋ฅ while(์กฐ๊ฑด๋ฌธ)์ ๋ค๋ก ๋บ๊ฒ ...
// ๋ญ์ ๋ค๋ฅผ ๊ฒ ์์์
var count = 0;
do{
console.log(count);
count++;
}while(count < 3);
์ฝ๋ ๋ธ๋ก์ ๋จผ์ ์คํํ๊ณ --> ์กฐ๊ฑด์์ ํ๊ฐํ๊ธฐ ๋๋ฌธ์
๋ฌด์กฐ๊ฑด ํ๋ฒ ์ด์ ์คํ๋๋ ํน์ง์ ์ง๋๊ณ ์๋ค.
๐ break ๋ฌธ
๋ ์ด๋ธ ๋ฌธ, ๋ฐ๋ณต๋ฌธ(for, for...in, for...of, while, do...while) ๋๋ switch๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ํ์ถํ๋ค.
์ด๋ค ์ด์ธ์ break๋ฌธ์ ์ฌ์ฉํ๋ฉด SyntaxError(๋ฌธ๋ฒ ์๋ฌ)๊ฐ ๋ฐ์ํ๋ค.
// if๋ฌธ -> Uncaught SyntaxError: Illegal break statement
if (true){
break;
}
// ๋ ์ด๋ธ ๋ฌธ -> ์๋ณ์๊ฐ ๋ถ์ ๋ฌธ
// ex. foo๋ผ๋ ์๋ณ์๊ฐ ๋ถ์ ๋ ์ด๋ธ ๋ฌธ
foo: console.log('foo');
// ex. foo๋ผ๋ ์๋ณ์๊ฐ ๋ถ์ ๋ ์ด๋ธ ๋ธ๋ก๋ฌธ
foo: {
console.log(1);
break foo; // foo ๋ ์ด๋ธ ๋ธ๋ก๋ฌธ์ ํ์ถํ๋ค.
console.log(2);
}
๋ ์ด๋ธ ๋ฌธ์ ํ๋ก๊ทธ๋จ์ ์คํ ์์๋ฅผ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
์ฌ์ค, switch๋ฌธ์ case๋ฌธ๊ณผ default๋ฌธ๋ ๋ ์ด๋ธ ๋ฌธ์ด๋ค.
๋ ์ด๋ธ ๋ฌธ์ ํ์ถํ๋ ค๋ฉด break๋ฌธ์ ๋ ์ด๋ธ ์๋ณ์๋ฅผ ์ง์ ํ๋ค.
// outer๋ผ๋ ์๋ณ์๊ฐ ๋ถ์ ๋ ์ด๋ธ for๋ฌธ
outer: for(var i=0; i<3; i++){
for(var j=0; j<3; j++){
if(i+j === 3) break outer;
console.log(`inner [${i}, ${j}]`);
}
console.log('Done!');
}
๋ ์ด๋ธ ๋ฌธ์ ์ค์ฒฉ๋ for๋ฌธ ์ธ๋ถ๋ก ํ์ถํ ๋ ์ ์ฉํ์ง๋ง, ๊ทธ ๋ฐ์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅํ์ง ์๋๋ค.
๋ ์ด๋ธ ๋ฌธ์ ์ฌ์ฉํ๋ฉด, ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ด ๋ณต์กํด์ ธ์ ๊ฐ๋ ์ฑ์ด ๋๋น ์ง๊ณ , ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
๐ continue ๋ฌธ
continue๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ์ฝ๋ ๋ธ๋ก ์คํ์ ํ ์์ ์์ ์ค๋จํ๊ณ ,
๋ฐ๋ณต๋ฌธ์ ์ฆ๊ฐ์์ผ๋ก ์คํ ํ๋ฆ์ ์ด๋์ํจ๋ค.
break๋ฌธ์ฒ๋ผ ๋ฐ๋ณต๋ฌธ์ ์์ ํ์ถํ์ง๋ ์๋๋ค.
var string = 'Hello World';
var search = 'l';
var count = 0;
// continue๋ฌธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด if๋ฌธ ๋ด์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
for(var i=0; i<string.length; i++){
if(string[i] === search){
count++;
}
}
// continue๋ฌธ์ ์ฌ์ฉํ๋ฉด if๋ฌธ ๋ฐ์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
for(var i=0; i<string.length; i++){
if(string[i] !== search) continue;
count++;
}
// ์ฐธ๊ณ ๋ก String.prototype.match ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ ๊ฐ์ ๋์์ ํ๋ค.
const regexp = new RegExp(search, 'g');
console.log(string.match(regexp).length);
์ถ์ฒ
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive - ์ด์ ๋ชจ
'Front-end > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ์์ ํ์ & ๊ฐ์ฒด ํ์ Primitive type & Reference type (0) | 2021.08.12 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด String (0) | 2021.07.24 |
์๋ฐ์คํฌ๋ฆฝํธ ํจ์ Function (0) | 2021.07.22 |
์๋ฐ์คํฌ๋ฆฝํธ ํํ์ & ๋ฌธ (0) | 2021.07.21 |
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ Data Type (0) | 2021.07.20 |
๋๊ธ