<aside> ๐
</aside>
null
**๊ณผ **undefind
**๋ง nullish ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ค.Nullishing coalescing operator(??
)
๋ ๋ณํฉ ์ฐ์ฐ์(??
)๋ ์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ null
๋๋ unfined
์ผ ๋ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ผ์ชฝ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํ๋ ๋
ผ๋ฆฌ ์ฐ์ฐ์์ด๋ค.
const ex1 = 1 ?? 0; // 1
const ex2 = null ?? 0; // 0
const ex2 = undefined ?? 0; // 0
optional chaing(?.
)
?.
์ฐ์ฐ์๋ .
์ฒด์ด๋ ์ฐ์ฐ์์ ์ ์ฌํ๊ฒ ์๋ํ์ง๋ง, ๋ง์ฝ ์ฐธ์กฐ๊ฐ nullishํ๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๋์ ์ ํํ์์ด undefined
๋ฅผ ๋ฆฌํดํ๊ฒ ๋๋ค. ํจ์ ํธ์ถ์์ ์ฌ์ฉ๋ ๋, ๋ง์ฝ ์ฃผ์ด์ง ํจ์๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด undefined
๋ฅผ ๋ฆฌํดํ๋ค.
const adventurer = {
name: 'Alice',
cat: {
name: 'Dinah',
},
};
const dogName = adventurer.dog?.name;
console.log(dogName);
// Expected output: undefined
console.log(adventurer.someNonExistentMethod?.());
// Expected output: undefined
Non-null assertion(!
)
์ ๋ฏธ์ ๋ถ๋ !
(๋จ์ธ ์ฐ์ฐ์)๋ ํผ์ฐ์ฐ์๊ฐ nullish
(null
๋๋ undefined
)ํ์ง ์์์ ๋จ์ธํ ๋ ์ฌ์ฉํ๋ค.
// Compiled with --strictNullChecks
function validateEntity(e?: Entity) {
// Throw exception if e is null or invalid entity
}
function processEntity(e?: Entity) {
validateEntity(e);
let s = e!.name; // e๊ฐ null์ด ์๋๊ณ ํ์คํ ์กด์ฌํ๋ค๊ณ ๋จ์ธ
}
null
์ด๋ undefined
๊ฐ ๋ ์ ์๋ ๊ฐ์ ์ด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์กฐ์ฌํ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๊ฑธ ์ฐ๋ฉด ํ์
์คํฌ๋ฆฝํธ์ ํ์
์ฒดํฌ ์ด์ ๋ ํ์ฉํ์ง ๋ชปํ๋ ์
์ด๋ ์ฌ๋งํ๋ฉด ์ฐ์ง ๋ง์.
boolean ๋ฌธ๋งฅ์์ false
๋ก ํ๊ฐ๋๋ ๊ฐ
Javascript์์๋ ์กฐ๊ฑด์ , ๋ฐ๋ณต์ ๋ฑ boolean ๊ฐ์ด ํ์ํ ๊ณณ์์ ํ ๋ณํ์ ํตํด ํน์ ๊ฐ์ boolean ๊ฐ์ผ๋ก ๋ณํํ๋ค.
Javascript์์ falsyํ ๊ฐ๋ค
๊ฐ | ํ์ | ์ค๋ช |
---|---|---|
null | Null | null ย ํค์๋๋ ์๋ฌด๋ฐ ๊ฐ๋ ์์์ ์๋ฏธ. |
undefined |
Undefined | undefined ๋ ์์๊ฐ์ ์๋ฏธ. |
false |
Boolean | false ย ํค์๋. |
NaN |
Number | NaN ์ ์ซ์๊ฐ ์๋์ ์๋ฏธ. |
0 |
Number | Theย Number ย 0,ย 0.0 ,ย 0x0 ย ๋ฑ๋ ํฌํจ. |
-0 |
Number | Theย Number ย ์์ 0,ย -0.0 ,ย -0x0 ย ๋ฑ๋ ํฌํจ. |
0n |
BigInt | - Theย BigInt ย 0,ย 0x0n ย ๋ฑ๋ ํฌํจ. |
"" |
String | ๋น์ด์๋ย stringย ๊ฐ, alsoย '' ย ๋ฐย ````๋ ํฌํจ. |
document.all |
Object | JavaScript์ ์ ์ผํ falsyํ ๊ฐ์ฒด๋ ๋ด์ฅย document.all ์ด๋ค. |
Logical OR(||
)
๋ ผ๋ฆฌ์ OR๋ ํผ์ฐ์ฐ์ ์ค ํ๋ ์ด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ์๋ง ์ฐธ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก boolean ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์ด ๊ฒฝ์ฐ์๋ boolean ๊ฐ์ ๋ฐํํ๋ค. ๊ทธ๋ ์ง๋ง boolean์ด ์๋ ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด boolean์ด ์๋ ๊ฐ์ด ๋ฐํ๋๋ค.
true || true; // t || t returns true
false || true; // f || t returns true
true || false; // t || f returns true
false || 3 === 4; // f || f returns false
"Cat" || "Dog"; // t || t returns "Cat"
false || "Cat"; // f || t returns "Cat"
"Cat" || false; // t || f returns "Cat"
"" || false; // f || f returns false
false || ""; // f || f returns ""
false || varObject; // f || object returns varObject
Double Bang(!!
)
!!
์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๋ฅผ boolean ๊ฐ์ผ๋ก ๋ณํํด์ฃผ๋ ์ฐ์ฐ์์ด๋ค. truthyํ ๊ฐ์ true
, falsyํ ๊ฐ์ false
๋ฅผ ๋ฆฌํดํ๋ค.
!!true // returns true
!!false // returns false
truthyํ ๊ฐ ์์
{}
[]
โanythingโ
3.14
new Date()
์ฌ์ฉ ์์
isLoggedIn: !!localStorage.getItem('accessToken')
// localStorage์ 'accessToken'์ด๋ผ๋ ์์ดํ
์ด ์์ผ๋ฉด true, ์์ผ๋ฉด false