๐๋จ์ถํ๊ฐ๋ ๋ฌด์์ผ๊น?
๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ํผ์ฐ์ฐ์๋ฅผ ํ์ ๋ณํํ์ง ์๊ณ ๊ทธ๋๋ก ๋ฐํํ๋ ๊ฒ
์ด๋ผ๊ณ ๋ ํ๋๋ฐ, ์ฌ์ค ์ ์๋ฟ์ง ์๋๋ค.
๋จ์ถ ํ๊ฐ๋ ํํ์์ ํ๊ฐํ๋ ๋์ค์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ํ์ ๋ ๊ฒฝ์ฐ ๋๋จธ์ง ํ๊ฐ ๊ณผ์ ์ ์๋ตํ๋ ๊ฒ์ ๋งํ๋ค.
์ฑ ์์ ์ด๋ ๊ฒ๋ ์ค๋ช ํ๋๋ฐ, ์ฌ์ค ์ด๊ฒ๋ ์ดํดํ๊ธฐ์ ์ด๋ ค์์ด ์๋ค.
๐ ๋ ผ๋ฆฌํฉ ์ฐ์ฐ์(||)
๋ ผ๋ฆฌํฉ ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ๋จ์ถํ๊ฐ๋ฅผ ์ดํดํด๋ณด์.
true || true
ํด๋น ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋น์ฐํ true์ด๋ค.
๋ ผ๋ฆฌํฉ ์ฐ์ฐ์(||)๋ ๋น๊ตํ๋ ๋์(ํผ์ฐ์ฐ์) ์ค ํ๋๋ง true์ฌ๋ true๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋ ๊น?
true || false
์๋ ๋น์ฐํ ๋ ์ค์ ํ๋๊ฐ true์ด๋ฏ๋ก true๋ฅผ ๋ฐํํ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ js๋ ์ฒ์์ true๋ง์ ํ์ธํ๊ณ ๋ ๊ฒฐ๊ณผ๊ฐ true์์ ํ๋จํ ์ ์๋ค(ํ ๊ฐ๋ง true์ฌ๋ ๋๋๊น)
๊ทธ๋ผ ๋์ด ์์๊ฐ ๋ค๋ฅด๋ฉด?
false || true
์ด๋๋ ๊ฒฐ๊ณผ ๊ฐ์ true์ด์ง๋ง, ์์ ๋ค๋ฅธ ์ ์
js๊ฐ ์ฒ์ false๊ฐ ์๋ ๋๋ฒ์งธ true๊น์ง ํ์ธํด์ผ true์์ ํ๋จํ ์ ์๋ค.
์ฌ๊ธฐ์ ๋จ์ถ ํ๊ฐ์ ๋๋ฒ์งธ ์ ์ ์๋
๋จ์ถ ํ๊ฐ๋ ํํ์์ ํ๊ฐํ๋ ๋์ค์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ํ์ ๋ ๊ฒฝ์ฐ ๋๋จธ์ง ํ๊ฐ ๊ณผ์ ์ ์๋ตํ๋ ๊ฒ์ ๋งํ๋ค.
๋ฅผ ๋ค์ ์๊ฐํด ๋ณผ ์ ์๋ค.
์๊น true์ false๋ฅผ ๋น๊ตํ๋ ์์์์ ๊ฒฐ๊ณผ๊ฐ ํ์ ๋๋ ์๊ธฐ๊ฐ ๋ค๋ฅด๋ค.
// ์ฒ์ ๋์ค๋ true์์ ๊ฒฐ๊ณผ๊ฐ ํ๋จ๋จ
true || false
// ๋๋ฒ์งธ์ ๋์ค๋ true์์ ๊ฒฐ๊ณผ๊ฐ ํ๋จ๋จ
false || true
์ด ์์์์๋ ๋ ๋ค ์ต์ข ๊ฒฐ๊ณผ๊ฐ true์์ ํฌ๊ฒ ๋ฌ๋ผ๋ณด์ด์ง ์๋๋ค.
๊ทธ๋ ์ง๋ง ๋จ์ํ true๋ false๊ฐ ์๋๋ผ๋ฉด?
'ํ์คํฐ' || '๊ฐ์์ง'
์ด ๊ฒฝ์ฐ์ ๋ฌธ์์ด์ Truthy๊ฐ์ด๋ฏ๋ก true๋ก ํ๊ฐ๋๋ค.
์ฆ ๋๋ค true์ด๋ฏ๋ก, ํ๊ฐ๋ ์ฒ์ ๋์ค๋ 'ํ์คํฐ'์์ ์ด๋ฏธ ๊ฒฐ๊ณผ๊ฐ ๋๋๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ๋จ์ถ ํ๊ฐ๋
๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ํผ์ฐ์ฐ์๋ฅผ ํ์ ๋ณํํ์ง ์๊ณ ๊ทธ๋๋ก ๋ฐํํ๋ ๊ฒ
์ด๋ผ๊ณ ํ์ผ๋ฏ๋ก, ํ์ ๋ณํํ์ง ์๊ณ ๊ทธ๋๋ก 'ํ์คํฐ'๋ฅผ ๋ฐํํ ๊ฒ์ด๋ค.
- ์ถ๊ฐ ์์๋ค
'ํ์คํฐ' || false // 'ํ์คํฐ'
false || 'ํ์คํฐ' // 'ํ์คํฐ'
'๊ฐ์์ง' || 'ํ์คํฐ' // '๊ฐ์์ง'
false || false // false
โ ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์(&&)
์ฐ์ฐ ๋์์ด ๋ชจ๋ true์ฌ์ผํ๋ ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์์์๋ ์ด๋ป๊ฒ ๋๋์ง ํ์ธํด๋ณด์
true && true
๋ ๋ค true์ผ ๋ ์ธ์ ๊ฒฐ๊ณผ๊ฐ ํ๋จ์ด ๋๋์ง๋ฅผ ์๊ฐํด๋ณด๋ฉด ๋๋ค.
์ฒซ๋ฒ์งธ true๋ง์ผ๋ก๋ ์ ์ฒด ๊ฒฐ๊ณผ๊ฐ ์ด๋จ์ง ์ ์ ์๋ค. ๋๋ฒ์งธ true๊น์ง ํ์ธํด์ผ ์ ์ฒด๊ฐ true์์ ํ๋จํ ์ ์๋ค.
'์ถ๋ฐฐ' && '๋๋น'
๋ ๋ค ๋ฌธ์์ด์ผ ๋, ๋ฌธ์์ด์ Truthy๊ฐ์ด๋ฏ๋ก ๋ ๋ค true๋ก ํ๊ฐ๋์ง๋ง,
๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์์์๋ ํ๊ฐ ํ์ ์ ๋๋ฒ์งธ ๋ฌธ์์ด์์ ํ๋จ๋๋ค.
์ฆ, ํด๋น ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ "๋๋น"๊ฐ ๋๋ค.
- ์ถ๊ฐ ์์๋ค
'์ถ๋ฐฐ' && '๋๋น' // '๋๋น'
false && '์ถ๋ฐฐ' // false
'์ถ๋ฐฐ' && false // false
โก ๋จ์ถํ๊ฐ์ ํ์ฉ
1. if ๋ฌธ์ ๋์ฒดํ ์ ์์
- ์กฐ๊ฑด์ด true์ผ ๋ = ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์ ์ฌ์ฉ(&&)
let done = true
let message = ''
// if ๋ฌธ์ ์ฌ์ฉํ ๋
if (done) message = '์๋ฃ!'
// ๋จ์ถ ํ๊ฐ๋ก ๋์ฒดํ ๋
message = done && '์๋ฃ!'
๋ ผ๋ฆฌ๊ณฑ(&&) ์ฐ์ฐ์๋ฅผ ์ด์ฉํด done์ด true์ผ ๋ '์๋ฃ!' ๋ผ๊ณ ๋ค์ด๊ฐ ์ ์๋๋ก ํ ์ ์๋ค.
- ์กฐ๊ฑด์ด false์ผ ๋ = ๋ ผ๋ฆฌํฉ ์ฐ์ฐ์ ์ฌ์ฉ(||)
let done = false
let message = ''
// if ๋ฌธ ์ฌ์ฉ
if (!done) message = '์์ง์'
// ๋
ผ๋ฆฌํฉ ์ฐ์ฐ์ ์ฌ์ฉ
message = done || '๋ฏธ์๋ฃ'
done์ด false๋ผ๋ฉด '๋ฏธ์๋ฃ'๊ฐ ์ ์ฅ๋๋ค.
ํ์ง๋ง ๋๊ฐ์ง ์์ ๋ชจ๋, done์ด ์ํ๋ ๊ฒฐ๊ณผ์ ๋ค๋ฅด๋ค๋ฉด false๊ฐ ์ ์ฅ๋๋ฏ๋ก ๋์ ๋ฐ๋ผ์ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์ข๋ค(if else๋ฌธ์ ๋์ฒดํ ์ ์์)
let done = false
let message = done ? '์๋ฃ' : '๋ฏธ์๋ฃ'
2. ๊ฐ์ฒด์ ํ๋กํผํฐ๊ฐ null์ด๊ฑฐ๋ undefined์ผ ๋ ์๊ธฐ๋ ์๋ฌ๋ฅผ ๋ง๊ณ ์ถ์ ๋
let ๊ณ ์์ด = null
let ์ด๋ฆ = ๊ณ ์์ด.์ด๋ฆ // TypeError: Cannot read property '์ด๋ฆ' of null
๊ฐ์ฒด์ ํ๋กํผํฐ๊ฐ ์ ์๋์ง ์๊ฑฐ๋ null์ด๋ฉด TypeError๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด ๋ ๋จ์ถํ๊ฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๋ฅผ ๋ง์ ์ ์๋ค.
let ๊ณ ์์ด = null
let ์ด๋ฆ = ๊ณ ์์ด && ๊ณ ์์ด.์ด๋ฆ // null
์ด๋ ๊ฒ ํ๋ฉด ๊ณ ์์ด๊ฐ null์ด๋ฏ๋ก ๋ ผ๋ฆฌ๊ณฑ์ฐ์ฐ์์์ ๋ฐ๋ก null์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋
3. ํจ์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ๋
ํจ์๋ฅผ ํธ์ถํ ๋ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ๋งค๊ฐ๋ณ์์๋ undefined๊ฐ ํ ๋น๋๋ค.
function print(str) {
console.log(str)
}
print() // undefined, ๋งค๊ฐ๋ณ์๊ฐ ์ ๋ฌ๋์ง ์์ผ๋ฏ๋ก
์ด ๋, ๋งค๊ฐ๋ณ์๋ฅผ ๋ฃ์ง ์๋ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํด์ฃผ๊ณ ์ถ์ผ๋ฉด ๋จ์ถํ๊ฐ๋ฅผ ์ฌ์ฉํ๋ค.
function print(str) {
str = str || '๋งค๊ฐ๋ณ์ ํ์ธํ์ธ์'
console.log(str)
}
print() // '๋งค๊ฐ๋ณ์ ํ์ธํ์ธ์'
ํ์ง๋ง ์ด๊ฒฝ์ฐ์๋ print(0), print(null)๊ณผ ๊ฐ์ด Falsy๋ก ํ๋จ๋ ์ ์๋ ๊ฐ์ด ๋ค์ด๊ฐ๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ค์ด๊ฐ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. ๊ทธ๋ด ๋์๋ ES6์ ๊ธฐ๋ณธ๊ฐ ์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์
function print(str = '๊ธฐ๋ณธ๊ฐ') {
console.log(str)
}
print() // ๊ธฐ๋ณธ๊ฐ
print(0) // 0
๋ ผ๋ฆฌํฉ ์ฐ์ฐ์์ ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์ ์ธ์๋ ES11์์ ๋์ ๋ ๋จ์ถํ๊ฐ๊ฐ ๋ ์๋ค.
๐์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์(?.)
์ขํญ์ ํผ์ฐ์ฐ์๊ฐ null ๋๋ undefined์ธ ๊ฒฝ์ฐ undefined๋ฅผ ๋ฐํํ๊ณ , ์๋๋ผ๋ฉด ์ฐํญ์ ํ๋กํผํฐ ์ฐธ์กฐ๋ฅผ ์ด์ด๊ฐ๋ค.
let ๊ณ ์์ด = null
let ์ด๋ฆ = ๊ณ ์์ด?.์ด๋ฆ // undefined
ES11์์ ๋์ ๋์๊ณ , ์ด์ ์๋ ๋ ผ๋ฆฌ์ฐ์ฐ์ &&๋ฅผ ์ฌ์ฉํ ๋จ์ถํ๊ฐ๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ง๋ง ์ฐจ์ด์ ๋ ์กด์ฌํ๋ค.
- ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์(&&): ์ขํญ์ด false๋ก ํ๊ฐ๋๋ ๊ฐ์ด๋ฉด ๋ฐ๋ก ๋ฐํ
- ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์(?.): ์ขํญ์ด false๋ก ํ๊ฐ๊ฐ ๋์ด๋ null๊ณผ undefined๊ฐ ์๋๋ผ๋ฉด ํ๋กํผํฐ ์ฐธ์กฐ๋ฅผ ์ด์ด๊ฐ
let ๊ณ ์์ด = ''
console.log(๊ณ ์์ด && ๊ณ ์์ด.length) // '' -> ๋น๋ฌธ์์ด์ด false๋ก ํ๋จ๋จ, ๋ฐ๋ก ํ๊ฐ
console.log(๊ณ ์์ด?.length) // 0 -> false์ง๋ง, null์ด๋ undefined๊ฐ ์๋
๐null ๋ณํฉ ์ฐ์ฐ์(??)
์ขํญ์ ํผ์ฐ์ฐ์๊ฐ null ๋๋ undefined์ธ ๊ฒฝ์ฐ ์ฐํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํ๊ณ , ์๋๋ผ๋ฉด ์ขํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํ
๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๊ธฐ์ ์ ์ฉํ๋ค.
let ๋ณ์ = null ?? '๊ธฐ๋ณธ๊ฐ'
console.log(๋ณ์) // '๊ธฐ๋ณธ๊ฐ'
null ๋ณํฉ ์ฐ์ฐ์๋ ES11์ ๋์ ๋์๋๋ฐ, ๊ทธ ์ ์๋ ๋ ผ๋ฆฌ์ฐ์ฐ์(||)๋ฅผ ์ฌ์ฉํด์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ์๋ค.
์ฌ๊ธฐ์๋ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
- ๋ ผ๋ฆฌํฉ ์ฐ์ฐ์(||): ์ขํญ์ด fasle๋ก ํ๋จ๋๋ฉด ์ฐํญ์ ๊ทธ๋๋ก ๋ฐํ, 0์ด๋ ''๋ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์์ ๋ชปํ ๋์์ด ๋ฐ์ํ ์๋ ์์
let ๋ณ์ = '' || '๊ธฐ๋ณธ๊ฐ'
console.log(๋ณ์) // '๊ธฐ๋ณธ๊ฐ'
let ์ซ์ = 0 || 10
console.log(์ซ์) // 10
- null ๋ณํฉ ์ฐ์ฐ์(??): ์ขํญ์ด false๋ก ํ๋จ๋๋๋ผ๋ null์ด๋ undefined๊ฐ ์๋๋ผ๋ฉด ์ขํญ์ ๋ฐํ
let ๋ณ์ = '' ?? '๊ธฐ๋ณธ๊ฐ'
console.log(๋ณ์) // ''
let ์ซ์ = 0 ?? 10
console.log(์ซ์) // 0
์ํฉ์ ๋ฐ๋ผ์ ์ด๋ค ๊ฑธ ์ฌ์ฉํ ์ง ์๋ ค๋ฉด ์ด๋ฐ๊ฑธ ์ ํํ๊ฒ ํ์ ํ๊ณ ์์ด์ผ ํ ๊ฒ ๊ฐ๋ค.
์ถ์ฒ
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive(์ด์ ๋ชจ, ์ํค๋ถ์ค)
'FrontEnd > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ํ๋กํ ํ์ (1) ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์์ (0) | 2024.11.09 |
---|---|
[Javascript] ์ผ๊ธ ๊ฐ์ฒด, ํจ์์ ํ๋กํผํฐ (0) | 2024.10.27 |
[Javascript] ํ์ ๋ณํ (0) | 2024.10.24 |
[JS] ๋ฐฑ์ค์์ fs ๋ชจ๋๋ก input ๋ฐ๊ธฐ(feat. VScode์ ๋ฐฑ์ค) (0) | 2024.06.18 |
[JS] JS์์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ(Array, Array.of, Array.from) (0) | 2024.06.11 |