๋ธ๋ก๋ฌธ์ 0๊ฐ ์ด์์ ๋ฌธ์ ์ค๊ดํธ๋ก ๋ฌถ์ ๊ฒ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ธ๋ก๋ฌธ์ ํ๋์ ์คํ๋จ์๋ก ์ทจ๊ธํ๋ค.
// ๋ธ๋ก๋ฌธ
{
var foo = 10;
}
// ์ ์ด๋ฌธ
var x = 1;
if (x < 10) {
x++;
}
// ํจ์ ์ ์ธ๋ฌธ
function sum(a, b) {
return a + b;
}
์กฐ๊ฑด๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํ์ ๊ฒฐ์ ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ if-else๋ฌธ๊ณผ switch ๋ฌธ ๋๊ฐ์ง ์กฐ๊ฑด๋ฌธ์ ์ ๊ณตํ๋ค.
์กฐ๊ฑด์์ ๊ฐ์์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ๋๋ฆฌ๊ณ else if๋ฌธ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ํ ๋๋ถ๋ถ์ if-else๋ฌธ์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ก ๋ฐ๊พธ์ด ์ฌ์ฉํ ์ ์๋ค.
var num = 2;
var kind;
// if ๋ฌธ
if(num > 0) {
kind = '์์'; // ์์๋ฅผ ๊ตฌ๋ณํ ์ ์๋ค.
}
console.log(kind); // ์์
// if...else ๋ฌธ
if(num > 0) {
kind = '์์';
}
else {
kind = '์์'; // 0์ ์์๊ฐ ์๋๋ค.
}
console.log(kind); // ์์
// if...else if ๋ฌธ
if(num > 0) {
kind = '์์';
}
else if(num < 0){
kind = '์์'; // 0์ ์์๊ฐ ์๋๋ค.
}
else {
kind = '์';
}
console.log(kind); // ์์
switch๋ฌธ์ ์ฃผ์ด์ง ํํ์์ ํ๊ฐํ์ฌ ๊ทธ ๊ฐ๊ณผ ์ผ์นํ๋ ํํ์์ ๊ฐ๋ case ๋ฌธ์ผ๋ก ์คํ ํ๋ฆ์ ์ฎ๊ธด๋ค. switch๋ฌธ์ ํํ์๊ณผ ์ผ์นํ๋ case๋ฌธ์ด ์๋ค๋ฉด default ๋ฌธ์ผ๋ก ์ด๋ํ๋ค. default ๋ฌธ์์ break๋ฌธ์ ์๋ตํ๋๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
// ์์ ์์ด๋ก ๋ณํํ๋ค. (11 -> 'November')
var month = 2;
var monthName;
switch(month) {
case 1: monthNAme = 'January';
break;
case 2: monthNAme = 'February';
break;
case 3: monthNAme = 'March';
break;
case 4: monthNAme = 'April';
break;
case 5: monthNAme = 'May';
break;
case 6: monthNAme = 'June';
break;
case 7: monthNAme = 'July';
break;
case 8: monthNAme = 'August';
break;
case 9: monthNAme = 'September';
break;
case 10: monthNAme = 'October';
break;
case 11: monthNAme = 'November';
break;
case 12: monthNAme = 'December';
break;
default: monthName = "Invalid month"
}
console.log(monthName); // February;
๐ง ํด ์ค๋ฃจ(fall through) ๋?
switch ๋ฌธ์ ํ์ถํ์ง ์๊ณ switch๋ฌธ์ด ๋๋ ๋๊น์ง ๋ชจ๋ case ๋ฌธ๊ณผ default ๋ฌธ์ ์คํ๋๋๊ฒ์ ๋ปํ๋ค. ์๋ ์์ ์์๋ monthName ๋ณ์์ ๊ฐ์ด ๊ณ์ ์ฌํ ๋น๋์ด Invalid month๊ฐ ์ถ๋ ฅ๋๋ค
// ์์ ์์ด๋ก ๋ณํํ๋ค. (11 -> 'November') var month = 2; var monthName; switch(month) { case 1: monthNAme = 'January'; case 2: monthNAme = 'February'; case 3: monthNAme = 'March'; case 4: monthNAme = 'April'; case 5: monthNAme = 'May'; case 6: monthNAme = 'June'; case 7: monthNAme = 'July'; case 8: monthNAme = 'August'; case 9: monthNAme = 'September'; case 10: monthNAme = 'October'; case 11: monthNAme = 'November'; case 12: monthNAme = 'December'; default: monthName = "Invalid month" } console.log(monthName); // Invaild month
๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๊ฒฝ์ฐ ์ฝ๋ ๋ธ๋ก์ ์คํํ๋ค ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ธ๊ฐ์ง ๋ฐ๋ณต๋ฌธ์ธ for ๋ฌธ, while ๋ฌธ, do-while ๋ฌธ์ ์ ๊ณตํ๋ค.
for ๋ฌธ์ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋ ๋๊น์ง ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํ๋ค. for ๋ฌธ์ ๋ณ์ ์ ์ธ๋ฌธ, ์กฐ๊ฑด์, ์ฆ๊ฐ์์ ๋ชจ๋ ์ต์ ์ด๋ฏ๋ก ๋ฐ๋์ ์ฌ์ฉํ ํ์๋ ์๋ค. for๋ฌธ์ ์คํ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
for ๋ฌธ์ ์คํํ๋ฉด ๋งจ ๋จผ์ ๋ณ์ ์ ์ธ๋ฌธ var i = 0 ์ด ์คํ๋๋ค. ๋ณ์ ์ ์ธ๋ฌธ์ ๋จ ํ ๋ฒ๋ง ์คํ๋๋ค.
๋ณ์ ์ ์ธ๋ฌธ์ ์คํ์ด ์ข ๋ฃ๋๋ฉด ์กฐ๊ฑด์์ด ์คํ๋๋ค. ํ์ฌ i ๋ณ์์ ๊ฐ์ 0์ด๋ฏ๋ก ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ true์ด๋ค.
์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true์ด๋ฏ๋ก ์ฝ๋ ๋ธ๋ก์ด ์คํ๋๋ค. ์ฆ๊ฐ๋ฌธ์ผ๋ก ์คํ ํ๋ฆ์ด ์ด๋ํ๋ ๊ฒ์ด ์๋๋ผ ์ฝ๋ ๋ธ๋ก์ผ๋ก ์คํ ํ๋ฆ์ด ์ด๋ํ๋ ๊ฒ์ ์ฃผ์ํ์.
์ฝ๋ ๋ธ๋ก์ ์คํ์ด ์ข ๋ฃ๋๋ฉด ์ฆ๊ฐ์ i++๊ฐ ์คํ๋์ด i ๋ณ์์ ๊ฐ์ 1์ด ๋๋ค.
์ฆ๊ฐ์ ์คํ์ด ์ข ๋ฃ๋๋ฉด ๋ค์ ์กฐ๊ฑด์์ด ์คํ๋๋ค. ๋ณ์ ์ ์ธ๋ฌธ์ด ์คํ๋๋ ๊ฒ์ด ์๋๋ผ ์กฐ๊ฑด์์ด ์คํ๋๋ค๋ ์ ์ ์ฃผ์ํ์. (์์์ ์ค๋ช ํ์ง๋ง ๋ณ์ ์ ์ธ๋ฌธ์ ๋จ ํ๋ฒ๋ง ์คํ๋๋ค. ํ์ฌ i ๋ณ์์ ๊ฐ์ 1์ด๋ฏ๋ก ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ true์ด๋ค.)
์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true ์ด๋ฏ๋ก ์ฝ๋ ๋ธ๋ก์ด ๋ค์ ์คํ๋๋ค.
์ฝ๋ ๋ธ๋ก์ ์คํ์ด ์ข ๋ฃ๋๋ฉด ์ฆ๊ฐ์ i++๊ฐ ์คํ๋์ด i๋ณ์์ ๊ฐ์ 2๊ฐ ๋๋ค.
์ฆ๊ฐ์ ์คํ์ด ์ข ๋ฃ๋๋ฉด ๋ค์ ์กฐ๊ฑด์์ด ์คํ๋๋ค. ํ์ฌ i ๋ณ์์ ๊ฐ์ 2์ด๋ฏ๋ก ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ false๋ค. ์กฐ๊ฑด์์ ํ๊ฐ๊ฒฐ๊ณผ๊ฐ false์ด๋ฏ๋ก for๋ฌธ์ ์คํ์ด ์ข ๋ฃ๋๋ค.
while ๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฉด ์ฝ๋ ๋ธ๋ก์ ๊ณ์ํด์ ๋ฐ๋ณต ์คํํ๋ค. for ๋ฌธ์ ๋ฐ๋ณต ํ์๊ฐ ๋ช ํํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๊ณ while ๋ฌธ์ ๋ฐ๋ณต ํ์๊ฐ ๋ถ๋ช ํํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
do-while ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ๋จผ์ ์คํํ๊ณ ์กฐ๊ฑด์์ ํ๊ฐํ๋ค. ๋ฐ๋ผ์ ์ฝ๋ ๋ธ๋ก์ ๋ฌด์กฐ๊ฑด ํ ๋ฒ ์ด์ ์คํ๋๋ค.
break ๋ฌธ์ ๋ ์ด๋ธ ๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋๋ switch ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ํ์ถํ๋ค. ๋ ์ด๋ธ ๋ฌธ์ด๋ ์๋ณ์๊ฐ ๋ถ์ ๋ฌธ์ ๋งํ๋ค.
// outer ๋ผ๋ ์๋ณ์๊ฐ ๋ถ์ ๋ ์ด๋ธ for ๋ฌธ
outer: for(var i = 0; i < 3; i++){
for(var j = 0; j < 3; j++) {
// i + j === 3์ด๋ฉด outer๋ผ๋ ์๋ณ์๊ฐ ๋ถ์ ๋ ์ด๋ธ for ๋ฌธ์ ํ์ถํ๋ค.
if(i+j === 3) break outer;
console.log(`inner [${i}, ${j}]`);
}
}
console.log('Done!');
์ ์ฝ๋์ฒ๋ผ ๋ ์ด๋ธ ๋ฌธ์ ์ค์ฒฉ๋ for๋ฌธ ์ธ๋ถ๋ก ํ์ถํ ๋ ์ ์ฉํ์ง๋ง ๊ทธ ๋ฐ์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅํ์ง ์๋๋ค. ๋ ์ด๋ธ๋ฌธ์ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ด ๋ณต์กํด์ ธ์ ๊ฐ๋
์ฑ์ด ๋๋น ์ง๊ณ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
continue ๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ํ ์ง์ ์์ ์ค๋จํ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ฆ๊ฐ์์ผ๋ก ์คํ ํ๋ฆ์ ์ด๋์ํจ๋ค.
var string = 'Hello world';
var search = 'l';
var count = 0;
// ๋ฌธ์์ด์ ์ ์ฌ ๋ฐฐ์ด์ด๋ฏ๋ก for ๋ฌธ์ผ๋ก ์ํํ ์ ์๋ค.
for(var i = 0; i < string.length; i++){
// 'l' ์ด ์๋๋ฉด ํ ์ง์ ์์ ์คํ์ ์ค๋จํ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ฆ๊ฐ์์ผ๋ก ์ด๋ํ๋ค.
if(string[i] !== search) continue;
count++;
}
console.log(count); // 3
// ์ฐธ๊ณ ๋ก String.prototype.match ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ ๊ฐ์ ๋์์ ํ๋ค.
const regexp = new RegExp(search, 'g');
console.log(string.match(regexp).length); // 3