2021. 8. 12. 23:56ใ๐ TIL
๐ If ๋ฌธ์ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค๋ ค๋ค, Null ๋ณํฉ ์ฐ์ฐ์ ๊น์ง ์๋ค!
if ๋ฌธ์ ๊ฐ๊ฒฐํ๊ฒ ํํํ๊ธฐ ์ํด ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
ES2020 ์์ ์ถ๊ฐ๋ Null ๋ณํฉ ์ฐ์ฐ์๋ฅผ ํตํด ์ผํญ ์ฐ์ฐ์์ ๊ธธ์ด๋ง์ ์ค์ผ ์ ์์๋ค.
์ด ๊ณผ์ ์์ ๋ด๊ฐ ์๋ชป ์๊ฐํ ๋ถ๋ถ์ ๊ธฐ๋กํด๋ณธ๋ค.
const header = {
...,
'id': request.headers['id'] ? request.headers['id'] : null
}
header ๊ฐ์ฒด ๋ด๋ถ id ํ๋กํผํฐ๋ฅผ ํ ๋นํ๋ ๊ณผ์ ์ ๋ณด์.
request.headers['id'] ๊ฐ ์กด์ฌํ๋ค๋ฉด, ๊ทธ ์์ฒด๋ฅผ ํ ๋นํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด null ๊ฐ์ ํ ๋นํ๋ค.
์ด๋ null ๋ณํฉ ์ฐ์ฐ์๋ฅผ ํ์ฉํ๋ฉด ์ฝ๋๋ฅผ ๋์ฑ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์๋ค.
const header = {
...,
'id': request.headers['id'] ?? null
}
request.headers['id'] ์ ๊ฐ์ด ์กด์ฌํ๋ฏ๋ก (defined), ํด๋น ๊ฐ์ ํ ๋นํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์(null, undefined) ์ผ ๋ ?? ๋ค์ null์ ํ ๋นํฉ๋๋ค. ์ด๋ ๋ด๊ฐ ์๋ชป ์๊ฐํ ๋ถ๋ถ์ ๋ฐ๋ก false ์ ๊ฒฝ์ฐ๋ค.
๋ง์ฝ request.headers['id']์ ๊ฐ์ด false ์ฌ๋, ๋๋ ๋น์ฐํ ?? ๋ค์ null ์ด ํ ๋น๋ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
ํ์ง๋ง ?? ์ฐ์ฐ์๋ ๋ ๊ฐ๋๋ก null ๋ณํฉ ์ฐ์ฐ์๋ค. null ๊ณผ false ๋ ์๊ฒฉํ ๊ตฌ๋ถํ๋ค.
// ๋๋ฒ์งธ ํผ์ฐ์ฐ์ ์ถ๋ ฅ
let a; //undefined
console.log(a ?? 100) //100
a = undefined;
console.log(a ?? 200) //200
a = null;
console.log(a ?? 300) //300
// ์ฒซ๋ฒ์งธ ํผ์ฐ์ฐ์ ์ถ๋ ฅ
a = false;
console.log(a ?? 400) // false
null ๋ณํฉ ์ฐ์ฐ์์ ์ฒซ๋ฒ์งธ ํผ์ฐ์ฐ์๊ฐ 'null, undefined' ์ผ ๊ฒฝ์ฐ์๋ง ๋๋ฒ์งธ ํผ์ฐ์ฐ์๊ฐ ์ ํ ๋จ์ ๊ธฐ์ตํ์!
โ OR ์ฐ์ฐ์ ( || ) ์ Null ๋ณํฉ ์ฐ์ฐ์( ?? ) ์ฐจ์ด
Null ๋ณํฉ ์ฐ์ฐ์์ OR ์ฐ์ฐ์(||)๋ ํท๊ฐ๋ฆด ์ฌ์ง๊ฐ ๋ค๋ถํ๋ค.
| | ๋ ์ฒซ ๋ฒ์งธ truthy ๊ฐ์ ๋ฐํํ๊ณ , ??๋ ์ฒซ ๋ฒ์งธ ์ ์๋(defined) ๊ฐ์ ๋ฐํํ๋ค.
// OR (||) ์ฐ์ฐ์
let a = 0;
console.log(a || 1) // 1
// null (??) ์ฐ์ฐ์
let a = 0
console.log(a ?? 1) // 0
์๋ณ์ a ๋ 0์ผ๋ก ์ ์๋ผ ์์ง๋ง, boolean ๊ฐ ๊ธฐ์ค์์ false ์ ํด๋น๋๋ค.
ํ์ง๋ง ์์ฐํ defined ๋ ์ํ์ด๊ธฐ ๋๋ฌธ์, null ๋ณํฉ ์ฐ์ฐ์ ๊ธฐ์ค์ผ๋ก 0 ๊ฐ์ด ์ถ๋ ฅ๋๋ค.