๐ Chapter 4 : ์กฐ๊ฑด๋ฌธ์ ๊น๋ํ๊ฒ ์์ฑํ๋ผ.
๐ฏ ๊ฑฐ์ง ๊ฐ์ด ์๋ ์กฐ๊ฑด๋ฌธ์ ์ถ์ฝํ๋ผ.โ
- ๊ฐ์ ๋น ๋ฅด๊ฒ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ ๋ถ ์๋ฃํ(boolean type)์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์์๊ฐ
true
,false
์ ์ฐธ ๋๋ ๊ฑฐ์ง ๊ฐ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ฌ์ด์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ด๋ค. - ๋๋ฑ์ ๋ด์ฉ์ ๊ฐ์ง๋ง ์๋ฃํ์ด ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋น๊ตํ ๋
==
์ ์ด์ฉํด์ ํ์ธํ ์ ์๋ค.
1 == '1' // true
- ๋์ผํ ๊ฐ ๋๋ ์๊ฒฉํ ์ผ์นํ๋ ๊ฐ์ด๋ ๋ ๊ฐ์ด ์๋ก ๋์ผํ ๋ฟ๋ง ์๋๋ผ ์๋ฃํ๋ ๊ฐ์ ๊ฒ์ ์๋ฏธํ๋ค.
1 === '1' // false
1 === 1 // true
- ๋น ๋ฌธ์์ด์ false์ ๋๋ฑํ๋ค. ๊ทธ๋ ์ง๋ง ์ผ์นํ์ง๋ ์๋๋ค. ๋ค์ ๋งํด ๋น ๋ฌธ์์ด์ ๊ฑฐ์ง ๊ฐ์ด๋ค.
'' == false; // true
'' === false; // false
- ๐ ๊ฑฐ์ง ๊ฐ์ ๋ชฉ๋ก MDN ์ฐธ๊ณ
- ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ๋น ๋ฐฐ์ด ๋๋ ๋น ๊ฐ์ฒด๋ผ๋ ํญ์ ์ฐธ๊ฐ์ด๋ค.
- ๋ฐ๋ผ์ ๊ฐ์ฒด ๋๋ ๋ฐฐ์ด์ด ๋น์ด์๋์ง ํ์ธํ๋ ค๋ฉด,
[].length
๋๋Object.keys({}).length
์ฒ๋ผ0
๋๋ ์ฐธ๊ฐ์ธ ์ซ์๋ฅผ ๋ฐํํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉ ํด์ผ ํ๋ค. - ์๋์ ๋ค๋ฅด๊ฒ ๊ฑฐ์ง ๊ฐ์ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
- ๊ฐ์ฅ ํํ ๋ฌธ์ ๋ ์๋์ ๊ฐ์ด ์์ธ์ ์ฌ์ฉํด ๋ฐฐ์ด์์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ์ด๋ค.
['a','b'].indexOf('a');
// return 0 => 0์ false
- ํ์ง๋ง ์ด ๊ฒฝ์ฐ๋
Array.includes()
๋ฅผ ์ฌ์ฉํด ํด๊ฒฐํ ์ ์๋ค. - ๋ํ, ์ ์๋์ง ์์ ํค-๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ๋ ๋ฌธ์ ๋ฅผ ๊ฒฝํํ ์ ์๋๋ฐ ์ ์๋์ง ์์ ํค์ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด
undefined
์ด๋ค. - ์ด ๊ฒฝ์ฐ ์ฝ๋์ ๋ค๋ฅธ ๊ณณ์ ๊ฐ์ฒด ๋๋ ๋งต์ ๋ณ๊ฒฝํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
const employee = {
name: 'Eric',
equipmentTraining: true,
};
function listCerts(employee) {
if(employee.equipmentTraining) {
employee.certificates = ['Equipment'];
// ์กฐ์
delete employee.equipmentTraining;
}
// ...์๋ต
}
function checkAuthorization() {
if(!employee.equipmentTraining) {
return '๊ธฐ๊ณ๋ฅผ ์๋ํ ๊ถํ์ด ์์ต๋๋ค.';
}
return `๋ฐ๊ฐ์ต๋๋ค! ${employee.name} ๋`;
}
listCerts(employee);
checkAuthorization(employee); // "๊ธฐ๊ณ๋ฅผ ์๋ํ ๊ถํ์ด ์์ต๋๋ค."
- ์ ์์ ์ฝ๋์์
listCerts
ํจ์์์ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๊ณ ํค-๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ์๋ค. - ๊ทธ ํ
checkAuthorization
์์ ๊ฐ์ฒด์ ๊ฐ์ด ์๋์ง ๊ฒ์ฌํ๋ค. - ๊ฐ์ฒด์ ํค๋ฅผ ์ ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ ,
undefined
๋ฅผ ๋ฐํํ๋ค. (๋งต๋ ๋์ผ) - ์ฝ๋๋ฅผ ์ ๊ฒํด ๋ณด๋ฉด ์ง์์ด ์ธ์ฆ์๋ฅผ ๋ฐ์์ ์กฐ๊ฑด๋ฌธ์ ํต๊ณผํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ด๊ฒ์ ์๋ชป๋์๋ค.
- ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฒซ ๋ฒ์งธ์ด์ ์๋ฑํ ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ์ง ์๋ ๊ฒ์ด๋ค.
- ๋ง์ฝ ๊ทธ๋ด ์ ์๋ ์ํฉ์ด๋ผ๋ฉด, ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฒฉํ ์ผ์น(strict equivalency)๋ฅผ ์ด์ฉํด์ ๊ฐ์ด ์๋์ง, ์ํ๋ ํ์์ธ์ง ํ์ธํ๋ค.
function checkAuthorization() {
if(employee.equipmentTraining !== true) {
return '๊ธฐ๊ณ๋ฅผ ์๋ํ ๊ถํ์ด ์์ต๋๋ค.';
}
return `๋ฐ๊ฐ์ต๋๋ค! ${employee.name} ๋`;
}
checkAuthorization(employee); // "๊ธฐ๊ณ๋ฅผ ์๋ํ ๊ถํ์ด ์์ต๋๋ค."
๐ฏ ์ผํญ ์ฐ์ฐ์๋ก ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ผ.โ
- ์ผํญ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด ๋ณ์์ ์ฌํ ๋น์ ์ค์ผ ์ ์๋ค.
- ๊ฒ๋ค๊ฐ ์๋ก์ด ๋ณ์ ์ ์ธ ๋ฐฉ์์
if/else
๋ฌธ์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ก ์ด์ด์ง๊ธฐ๋ ํ๋ค. - ๋ธ๋ก ์ ํจ ๋ฒ์ ๋ณ์๋ฅผ ํ์ธํ๋ ค๊ณ ํ ๋ ๋ธ๋ก ๋ฐ์์๋ ํ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ค.
if (title === '๊ณผ์ฅ') {
const permissions = ['๊ทผ๋ก์๊ฐ','์๋น'];
} else {
const permissions = ['๊ทผ๋ก์๊ฐ'];
}
permissions; // Uncaught ReferenceError: permissions is not defined
- ์ด๋ ๊ฒ ๋๋ฉด ๋ธ๋ก ์ ํจ ๋ฒ์ ๋ฐ์์๋ ์ ๊ทผ ๊ฐ๋ฅํ
var
๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ฑฐ๋let
์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณif/esle
๋ฌธ ๋ด๋ถ์์ ์ฌํ ๋นํด์ผ ํ๋ค.
let permissions;
if (title === '๊ณผ์ฅ') {
permissions = ['๊ทผ๋ก์๊ฐ','์๋น'];
} else {
permissions = ['๊ทผ๋ก์๊ฐ'];
}
- ํ์ง๋ง ๋ณ์๊ฐ ์์ฑ๋๋ ์์ ์ ๊ฑฑ์ ํด์ผ ํ๊ณ , ์ ์ฌ ์ ์ธ ์ ํจ ๋ฒ์ ์ถฉ๋๊น์ง ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ผํญ ์ฐ์ฐ์๋ก ํด๊ฒฐํ ์ ์๋ค.
- ๋ํ, ์ผํญ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์
const
์ ์ง์ ์ ์ธํ๋ฏ๋ก ์ข ๋ ์์ธก ๊ฐ๋ฅํ๋ค.
const permissions = title === '๊ณผ์ฅ' ? ['๊ทผ๋ก์๊ฐ','์๋น'] : ['๊ทผ๋ก์๊ฐ'];
- ํ ๊ฐ์ง ์ฃผ์ํ ์ ์ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์๋ ์์ง๋ง ๊ฐ๊ธ์ ํผํ๋ ๊ฒ์ด ์ข๋ค.
const permissions = title === '๋ถ์ฅ' || title === '๊ณผ์ฅ' ?
title === '๊ณผ์ฅ' ?
['๊ทผ๋ก์๊ฐ', '์ด๊ณผ๊ทผ๋ฌด์น์ธ', '์๋น'] : ['๊ทผ๋ก์๊ฐ', '์ด๊ณผ๊ทผ๋ฌด์น์ธ']
: ['๊ทผ๋ก์๊ฐ'];
- ์์ ๊ฐ์ ์์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์ค์ฒฉ๋ ์ผํญ ์ฐ์ฐ์๋ ์ ๋๋ก ์ฝ์ ์ ์๊ฒ ๋์๊ณ , ๋จ์ํจ์ด๋ผ๋ ๊ฐ์น๋ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์์ ํ ๋ธ๋ก ์ธ๋ถ๋ก ๋ถ๋ฆฌํด์ ๋ ๋ฆฝ์ ์ธ ํจ์๋ก ์ด๋์ํจ๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ๊ณผ๋ํ ์ฝ๋์ ๋ํ ์ฐ๋ ค ์์ด
const
๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
function getTimePermissions({ title }) {
if(title === '๊ณผ์ฅ') {
return ['๊ทผ๋ก์๊ฐ', '์ด๊ณผ๊ทผ๋ฌด์น์ธ', '์๋น'];
}
if (title === '๋ถ์ฅ') {
return ['๊ทผ๋ก์๊ฐ', '์ด๊ณผ๊ทผ๋ฌด์น์ธ'];
}
return ['๊ทผ๋ก์๊ฐ'];
}
const permissions = getTimePermissions({ title: '์ฌ์' }); // ['๊ทผ๋ก์๊ฐ']
- ์์ ๊ฐ์ด ์ถ์ํ ์์ด ํ ๊ฐ์ง ์์ ๋ง์ ๋ชฉ์ ์ผ๋ก ํ๋ ์งง์ ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ๋์ง ์๊ณ , ๊นจ๋ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฒซ ๋จ๊ณ์ด๊ธฐ๋ ํ๋ค.