๊ธฐ์กด || ์ฐ์ฐ์์ ํ๊ณ์
function isEnabled(options) {
return console.log(options.enabled || true)
}
isEnabled({}); // true
isEnabled({enabled: null}); // true
isEnabled({enabled: false}); // true ์์ฑ ๊ฐ์ธ false๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ณ true๋ฅผ ๋ฐํํ๊ณ ์๋ค.
||
์ฐ์ฐ์๋ ์ขํญ์ด falsy
ํ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ์ฐํญ์ ํํ๋ค. ํ์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ์์๋ null
, undefined
๋ฟ ์๋๋ผ false
, 0
, ""
, NaN
๋ฑ ๋ค์ํ ๊ฐ์ falsy
ํ๊ฒ ์ฌ๊ธด๋ค.
๋ํ ||
์ฐ์ฐ์๋ ์ฒซ ๋ฒ์งธ truthy
๊ฐ์ ๋ฐํํ๋ค๋ฉด(์กด์ฌํ ๊ฒฝ์ฐ), ??
๋ ์ฒซ ๋ฒ์งธ defined value๋ฅผ ๋ฐํํ๋ค.
??
, Nullish Coalescing Operator
์ฌ๋ฌ ํผ์ฐ์ฐ์ ์ค ๊ฐ์ด ํ์ ๋, ์ฆ null๋ ์๋๊ณ undefined๋ ์๋ ๊ฒฝ์ฐ๋ฅผ ํ๊ฐํ๋ค.
x = (a !== null && n !== undefined) ? a : b; // ์ด ์ผํญ ์ฐ์ฐ์๋ ์๋์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ค.
x = (a ?? b)
let firstName = null;
let lastName = null;
let nickName = 'developer';
console.log(firstName ?? lastName ?? nickName ?? 'Anonymous'); // developer
let hight = 0;
console.log(height || 100); // 100. 0์ falsy ๊ฐ์ผ๋ก ์ทจ๊ธ. ๋ฐ๋ผ์ null, undefined๋ฅผ ํ ๋นํ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ฒ๋ฆฌ
console.log(height ?? 100); // 0. height๊ฐ ์ ํํ null์ด๋ undefined์ผ ๊ฒฝ์ฐ์๋ง 100
Node.js 14 ์ด์๋ถํฐ ์ง์
ํฐ๋ฏธ๋์์ node.js ์์์๋ ??์ ์ธ์ํ์ง ๋ชปํ๊ธธ๋ ์ฐพ์๋ณด๋ 14๋ถํฐ ์ง์ํ๋ค๊ณ ํ๋ค. ์๋์ฐ์ ๊ฒฝ์ฐ์๋ ์ง์ ํํ์ด์ง์ ๊ฐ์ ๋ค์ด ๋ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ์งํํด์ผ ํ๋ค.
Tips
-
0์ด ํ ๋น๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ ์์๋
??
์||
๋์ ์ฌ์ฉํ๋ฉด ์ข๋ค. -
์ฐ์ฐ์ ์ฐ์ ์์ 5๋ก ๋ฎ์ผ๋ฏ๋ก ์ฌ์ฉ ์ ๊ดํธ๋ฅผ ์ ์ ํ ๋ฌถ์ด ์ฌ์ฉํ๋ค.
-
??
๋&&
์ด๋||
์ ํจ๊ป ์ฌ์ฉํ์ง ๋ชปํ๋ค. -> ๊ดํธ๋ก ๋ฌถ์ด ํด๊ฒฐํ ์ ์๋ค. -
๋ง์ฐฌ๊ฐ์ง๋ก ES2020์ ๋์ ๋
?.
์ฐ์ฐ์์ ํจ๊ป ์ธ์๋ก ๋ง๊ฐํด์ง๋ค.