!! (์ด์ค ๋ถ์ ์ฐ์ฐ์)
- ๊ฐ์ ๋ถ๋ฆฌ์ธ(Boolean) ํ์ (true ๋๋ false)์ผ๋ก ๊ฐ์ ๋ก ๋ณํํฉ๋๋ค.
- falsy ๊ฐ (false, 0, "", null, undefined, NaN)์ false๋ก ๋ณํ๋ฉ๋๋ค,
- truthy ๊ฐ (falsy ๊ฐ ์ธ)์ true๋ก ๋ณํ๋ฉ๋๋ค.
console.log(!!0); // false console.log(!!""); // false console.log(!!null); // false console.log(!!"netflix"); // true console.log(!!1); // true
?? (Nullish Coalescing Operator)
- ๋ ๊ฐ ์ค "nullish" null ๋๋ undefined๋ง ์ฒดํฌํ๋ฉฐ null๊ณผ undefined๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํฉ๋๋ค.
- a ?? b ๋ a๊ฐ null ๋๋ undefined๊ฐ ์๋๋ฉด a๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด b๋ฅผ ๋ฐํํฉ๋๋ค.
- ?? ๋ null๊ณผ undefined๋ง ์ฒดํฌํ๋ฉฐ, ๋ค๋ฅธ falsy ๊ฐ(false, 0, "", NaN)์ nullish๋ก ๊ฐ์ฃผํ์ง ์์ต๋๋ค.
- 0์ nullish ๊ฐ์ด ์๋๋ฏ๋ก, 0 ?? b๋ ํญ์ 0์ ๋ฐํํฉ๋๋ค (b๋ ๋ฌด์๋จ).
console.log(0 ?? "default"); // 0 (0์ nullish๊ฐ ์๋)
console.log(null ?? "default"); // "default" (null์ nullish)
console.log(undefined ?? "default"); // "default" (undefined๋ nullish)
console.log("" ?? "default"); // "" (๋น ๋ฌธ์์ด์ nullish๊ฐ ์๋)
console.log(false ?? "default"); // false (false๋ nullish๊ฐ ์๋)?? (Nullish Coalescing Operator)๋ฅผ ์ฌ์ฉํ ๋ ๋ ๋ฒ์งธ ๊ฐ๋ฅผ ๋ฐํํฉ๋๋ค.
console.log(null ?? undefined); // undefined
console.log(undefined ?? null); // null