๋ธ๋ก๋ฌธ
๐ MDN ๋ฌธ์ ๋ณด๊ธฐ
- 0๊ฐ ์ด์์ ๋ฌธstatement๋ค์ ๋ฌถ์ ๋จ์
- ์ผ๋ฐ์ ์ผ๋ก, ์ดํ ๋ฐฐ์ธ ์ ์ด๋ฌธ, ํจ์ ๋ฑ์ ์ฌ์ฉ
- ์๋ก์ด ์ค์ฝํ ์์ฑ
์ค์ฝํ scope
๋ธ๋ก ์์ ์ ์ธ๋ ๋ณ์์ ์์๋ฅผ ๋ฐ์์ ์ฌ์ฉ ๋ถ๊ฐ
{
const x = 'Hello';
let y = 'world!';
console.log(x, y);
}
โ
console.log(x);
console.log(y);
๋ธ๋ก ์์ชฝ์์๋ ๋ฐ๊นฅ์ ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
let x = 1;
โ
{
let y = 2;
console.log(x, y);
}
console.log(x);
console.log(y);
๋ธ๋ก ์์ชฝ์ ๋ณ์๋ ์์๊ฐ ์๋ก ์ ์ธ๋๋ฉด ๋ฐ๊นฅ ๊ฒ์ ๋ฎ์ด์
const xx = 0;
let yy = 'Hello!';
console.log(xx, yy);
โ
{
const xx = 1; // ๐ก ๋ธ๋ก ์์์๋ ๋ฐ๊นฅ์ const ์ฌ์ ์ธ ๊ฐ๋ฅ
let yy = '์๋
ํ์ธ์~';
โ
console.log(xx, yy);
// โ ๏ธ const, let์ ๋นผ๋จน์ผ๋ฉด ์ฌ์ ์ธ์ด ์๋๋ผ ๋ฐ๊นฅ๊ฒ์ ๊ฐ์(๋ณ์๋ฉด) ๋ฐ๊ฟ!
}
โ
console.log(xx, yy);
์ค์ฝํ ์ฒด์ธ scope chain
๐ฅ ์คํ stack
- ํ์
์ ์ถ - ๋์ค์ ์จ ๊ฒ์ด ๋จผ์ ๋๊ฐ
let a = 0;
let b = 1;
let c = 2;
console.log('์์ 1:', a, b, c);
โ
{
let a = 'A';
let b = 'B'
console.log('์์ 2:', a, b, c);
โ
{
let a = '๊ฐ'
console.log('์์ 3:', a, b, c);
}
โ
console.log('์์ 4:', a, b, c);
}
โ
console.log('์์ 5:', a, b, c);
- ๋ธ๋ญ ์์ ํด๋น ๋ณ์/์์๊ฐ ์์ผ๋ฉด ๋ฐ๊นฅ์ชฝ์ผ๋ก ์ฐพ์ ๋๊ฐ - ์ฒด์ด๋
โญ ๋ฉ๋ชจ๋ฆฌ์์์ ๊ด์
์ ์ญ global ๋ณ์/์์
- ๋ฐ์ดํฐ data ์์ญ์ ์์น
- ์ฝ๋ ์ด๋ ๊ณณ์์๋ ์ ๊ทผ ๊ฐ๋ฅ - ๋ธ๋ก ๋ด ๋๋ช
์ ๋ณ์๋ ์์์ ๋ฎ์ด์์์ง์ง ์๋ ์ด์
- ํ๋ก๊ทธ๋จ ์ข
๋ฃ์ ์๋ฉธ
- โญ๏ธ ์ ์ญ๋ณ์ ์ฌ์ฉ์ ์ต์ํํ ๊ฒ
์ง์ญ local ๋ณ์/์์
- ์คํ ์์ญ์ ์์น
- ํด๋น ๋ธ๋ก ์์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ๋ธ๋ก ์คํ ์ข
๋ฃ์ ์๋ฉธ
- โญ ๋ณ์๋ ์์๋ ๊ฐ๋ฅํ ์ฌ์ฉํ ๋ธ๋ก ๋ด์์ ์ ์ธ - ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
if๋ฌธ
const open = true;
โ
// ํ์ค ์ฝ๋
if (open) console.log('์์
์ค์
๋๋ค.');
// ์ฌ๋ฌ์ค ์ฝ๋ - ๋ธ๋ก๋ฌธ ์ฌ์ฉ
if (open) {
console.log('ํ์ํฉ๋๋ค.');
console.log('์ฆ๊ฑฐ์ด ์ผํํ์ธ์!');
}
if ~ else๋ฌธ
const x = 20;
โ
if (x % 2) {
console.log('ํ์์
๋๋ค.');
} else {
console.log('์ง์์
๋๋ค.');
}
์ค์ฒฉ ์ฌ์ฉ
const x = 22;
โ
if (x % 4) {
if (x % 2) {
console.log('ํ์์
๋๋ค.');
} else {
console.log('์ง์์
๋๋ค.');
}
} else {
console.log('4์ ๋ฐฐ์์
๋๋ค.');
}
if ~ else if ~๋ฌธ
const x = 21;
โ
if (x % 2) {
console.log('ํ์์
๋๋ค.');
} else if (x % 4) {
console.log('์ง์์
๋๋ค.');
} else {
console.log('4์ ๋ฐฐ์์
๋๋ค.');
}
๐ก ๋ณด๋ค ๊ถ์ฅ๋๋ ๋ฐฉ์
- return๋ฌธ: ํจ์ ์คํ์ ์์ ํ ์ข
๋ฃ
function evalNum () {
const x = 21;
โ
if (x % 2) {
console.log('ํ์์
๋๋ค.');
return;
}
โ
if (x % 4) {
console.log('์ง์์
๋๋ค.');
return;
}
โ
console.log('4์ ๋ฐฐ์์
๋๋ค.');
}
โ
evalNum();
console.log('๋ธ๋ก๋ฌธ ๋ฐ๊นฅ');
ํน์ ๊ฐ์ ๋ํ ๋ค์์ ์ต์
์ด ์์ ๋ ์ฌ์ฉ
์ฃผ์ด์ง ํ๊ฐ์ ์ผ์นํ๋ case๋ก ์คํ์์น ์ด๋
const fingersOut = 2;
โ
switch (fingersOut) {
// ์์ ์๊ด์์
case 2:
console.log('๊ฐ์');
break;
case 0:
console.log('๋ฐ์');
break;
case 5:
console.log('๋ณด');
break;
default:
console.log('๋ฌดํจ');
}
- break;๋ค์ ์ ๊ฑฐํ๊ณ ์คํํด๋ณผ ๊ฒ
- default: ๋งจ ์๋ ์์ฑ, break๋์ง ์์ ์ด์ ๋ฌด์กฐ๊ฑด ์คํ
const direction = 'north'
let directionKor;
โ
switch (direction) {
case 'north':
directionKor = '๋ถ';
break;
case 'south':
directionKor = '๋จ';
break;
case 'east':
directionKor = '๋';
break;
case 'west':
directionKor = '์';
break;
default:
directionKor = '๋ฌดํจ';
}
โ
console.log(directionKor);
- break;๋ค์ ์ ๊ฑฐํ๊ณ ์คํํด๋ณผ ๊ฒ
// ๐ก ์ฐธ๊ณ : ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ฐฉ๋ฒ
const direction = 'north'
โ
const directionKor = {
north: '๋ถ',
south: '๋จ',
east: '๋',
west: '์'
}[direction] ?? '๋ฌดํจ'
โ
console.log(directionKor);
const month = 1;
let season = '';
โ
switch (month) {
case 1: case 2: case 3:
season = '1๋ถ๊ธฐ'; break;
โ
case 4: case 5: case 6:
season = '2๋ถ๊ธฐ'; break;
โ
case 7: case 8: case 9:
season = '3๋ถ๊ธฐ'; break;
โ
case 10: case 11: case 12:
season = '4๋ถ๊ธฐ'; break;
โ
default:
season = '์๋ชป๋ ์์
๋๋ค.';
}
โ
console.log(season);
const startMonth = 1;
let holidays = '๋ถ๊ธฐ ๋ด ํด์ผ:';
โ
switch (startMonth) {
case 1:
holidays += ' ์ค๋ ';
case 2:
case 3:
holidays += ' 3•1์ ';
break;
โ
case 4:
case 5:
holidays += ' ์ด๋ฆฐ์ด๋ ';
case 6:
holidays += ' ํ์ถฉ์ผ';
break;
โ
case 7:
case 8:
holidays += ' ๊ด๋ณต์ ';
case 9:
holidays += ' ์ถ์';
break;
โ
case 10:
holidays += ' ํ๊ธ๋ ';
case 11:
case 12:
holidays += ' ํฌ๋ฆฌ์ค๋ง์ค';
break;
โ
default:
holidays = '์๋ชป๋ ์์
๋๋ค.';
}
โ
console.log(holidays);