์ค๋์ '๋ถ๋ฆฌ์ธ(Boolean)' ํ์ ์ ๋ํด์ ์์๋ณด๋๋ก ํ์!
Boolean์ '๋ถ๋ฆฐ'์ด๋ผ๊ณ ๋ ์ฝ๊ณ '๋ถ๋ฆฌ์ธ'์ด๋ผ๊ณ ๋ ์ฝ๋๋ค.
์ปดํจํฐ ์ฌ์ด์ธ์ค์์๋ '๋
ผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ ์ ํ'์ด๋ผ๊ณ ์ค๋ช
ํ๊ณ ์๋ค.
๊ฐ์ผ๋ก๋ true
์ false
๋ง์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์๋์ฒ๋ผ if๋ฌธ
๊ณผ ๊ฐ์ ์กฐ๊ฑด๋ฌธ๊ณผ ํจ๊ป ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ ํ์ด๋ค.
<script>
let a = 5;
let b = 12;
// ์๋์ ์กฐ๊ฑด๋ฌธ(if)๋ ๊ฑฐ์ง์์ผ๋ก 'false'์ผ ๋ ์คํํ๋ 'else'๋ฌธ์ด ์คํ๋๋ค
if(a >= b){
console.log("a๋ b๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค") // true์ผ๋ ์คํ
} else {
console.log("a๋ b๋ณด๋ค ์๋ค") // false์ผ๋ ์คํ
}
</script>
๋น๊ต์ฐ์ฐ์
๋ ๋ถ๋ฆฌ์ธ ํ์
๊ณผ ์ ๋ ๋ผ์ด๋ผ ์ ์๋ ์ฐ์ฐ์์ด๋ค.
์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ <
, <=
, >
, >=
๋ฑ ์ฒ๋ผ ๋ถ๋ฑํธ๊ฐ ๋น๊ต์ฐ์ฐ์
๋ผ๊ณ ํ๋ค.
๋น๊ต์ฐ์ฐ์
๋ ๊ฐ์ ๋ถ๋ฆฌ์ธ ํ์
์ ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
<script>
console.log(5 > 1); // true
console.log(3 >= 4); // false
console.log(2 < 5); // true
console.log(1 <= 0); // false
</script>
๋ฌผ๋ก ๋ณ์์ ๊ฐ์ ๋น๊ตํ ์๋ ์๋ค.
<script>
let value1 = 50;
let value2 = 30;
console.log(value1 > value2); // true
console.log(value1 < value2); // false
</script>
๋ถ๋ฑํธ ๊ฐ์ ๋น๊ต์ฐ์ฐ์
๋ ์์ง๋ง ์ฒ์๋ณด๋ ๋ฑํธ๊ฐ ์๋ค.
๋ฐ๋ก ==
, ===
, !=
, !==
์ด๋ค.
==
: ๋๋ฑ ๋น๊ต์ฐ์ฐ์, ๊ฐ๋ง ๊ฐ์ผ๋ฉด true
๋ฅผ ๋ฐํํ๋ค. ๋ฐ์ดํฐ ํ์
์ ๋น๊ตํ์ง ์๋๋ค.<script>
// ์ซ์ ํ์
๊ณผ ๋ฌธ์์ด ํ์
์ 30
let value1 = 30;
let value2 = '30';
value1 == value2 // true, ๊ฐ์ด ๊ฐ์
value1 == 30 // true, ๊ฐ์ด ๊ฐ์
value2 == 20 // false, ๊ฐ์ด ๋ค๋ฆ
</script>
===
: ์ผ์น ๋น๊ต์ฐ์ฐ์, ๊ฐ๊ณผ ๋ฐ์ดํฐ ํ์
์ด ๋ชจ๋ ๊ฐ์ผ๋ฉด true
๋ฅผ ๋ฐํํ๋ค. '๋๋ฑ ๋น๊ต์ฐ์ฐ์'์ ๊ฐ์ ์๋ก ๋น๊ตํด๋ณด๋ฉด ์ฐจ์ด๋ฅผ ์ ์ ์๋ค.
<script>
// ์ซ์ ํ์
๊ณผ ๋ฌธ์์ด ํ์
์ 30
let value1 = 30;
let value2 = '30';
value1 === value2 // false
value1 === 30 // true, ๊ฐ๊ณผ ๋ฐ์ดํฐ ํ์
์ด ๊ฐ์
value2 === 20 // false
</script>
!=
: ๋ถ๋๋ฑ ๋น๊ต, ๊ฐ์ด ๋ค๋ฅด๋ฉด true
๋ฅผ ๋ฐํํ๋ค. ๋ฐ์ดํฐ ํ์
์ ๋น๊ตํ์ง ์๋๋ค.<script>
// ์ซ์ ํ์
๊ณผ ๋ฌธ์์ด ํ์
์ 30
let value1 = 30;
let value2 = '30';
value1 != value2 // false, ๊ฐ์ด ๊ฐ์
value1 != 30 // false, ๊ฐ์ด ๊ฐ์
value2 != 20 // true, ๊ฐ์ด ๋ค๋ฆ
</script>
!==
: ๋ถ์ผ์น ๋น๊ต, ๊ฐ๊ณผ ๋ฐ์ดํฐํ ์ค ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด true
๋ฅผ ๋ฐํํ๋ค.<script>
// ์ซ์ ํ์
๊ณผ ๋ฌธ์์ด ํ์
์ 30
let value1 = 30;
let value2 = '30';
value1 !== value2 // true, ๊ฐ์ ๊ฐ์ผ๋ ๋ฐ์ดํฐ ํ์
์ด ๋ค๋ฆ
value1 !== 30 // false, ๊ฐ๊ณผ ๋ฐ์ดํฐ ํ์
์ด ๊ฐ์
value2 !== 20 // true, ๊ฐ์ด ๋ค๋ฅด์ง๋ง ๋ฐ์ดํฐ ํ์
์ด ๊ฐ์
</script>
๋น๊ต์ฐ์ฐ์๊ฐ ์๋ ๋
ผ๋ฆฌ์ฐ์ฐ์์ธ !
, !!
๋ ๋ถ๋ฆฌ์ธ ํ์
์ ๊ฐ์ ๋ฐํํ๋ค.
!
: ๋ถ์ ์ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋
ผ๋ฆฌ์ฐ์ฐ์, ๊ฐ์ '๋ฐ๋'์ ๊ฐ์ ๋ฐํํ๋ค.<script>
let value1 = true;
let value2 = false;
// ๋ณ์์ ๊ฐ์ ๋ฐ๋๋ก ๋ฐํํด์ค๋ค.
!value1; // false;
!value2; // true;
</script>
!!
: ๋ถ์ ์ ๋ถ์ ์ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋
ผ๋ฆฌ์ฐ์ฐ์, ๊ฐ์ '๋ฐ๋์ ๋ฐ๋'์ ๊ฐ์ ๋ฐํํ๋ค.<script>
let value1 = true;
let value2 = false;
// ๋ณ์์ ๊ฐ์ ๋ฐ๋์ ๋ฐ๋๋ก ๋ฐํํด์ค๋ค.
!!value1; // true;
!!value2; // false;
</script>
Truthy
์ Falsy
๊ฐ์์์ ์ฐ๋ฆฌ๊ฐ ์์ ๋ก ๋ณธ ๊ฒ์ ๋ช
๋ฐฑํ๊ฒ true
๊ฐ๊ณผ false
์ธ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ์ง๋ง true
๊ฐ์ ๊ฐ์ธ Truthy
, false
๊ฐ์ ๊ฐ์ธ Falsy
๋ ๊ฒ์ด ์กด์ฌํ๋ค. ๋ฌผ๋ก ์ฐ๋ฆฌ๊ฐ ๋น๊ต ์ฐ์ฐ์ ํ ๋ ํผ๋์ ์ค ์ ์๋ ๊ฒ์์ผ๋ก ๋ฐ๋์ ์๊ณ ์์ด์ผํ๋ค.
์ฐ์ Falsy
๊ฐ์ ์ ๋ฆฌํ๋ฉด ๋๋จธ์ง๋ Truthy
๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
false
๊ฐ์ ๊ฐ์ ์๋ฏธํ๋ค.
์๋์ ๊ฐ ๋ชจ๋ false
๋ฅผ ๋ฐํํ๋ค.
false
undefined
null
0
, -0
NaN
''
Truthy
์ true
๊ฐ์ ๊ฐ์ ์๋ฏธํ๋ค. ์์ Falsy
๊ฐ์ ์ ์ธํ ๋๋จธ์ง๋ true
๋ฅผ ๋ฐํํ๋ค.
๊ทธ ์ค์์ ์ฃผ์ํด์ผํ๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
[]
{}
0
์์ Truthy
๊ฐ๊ณผ Falsy
๊ฐ์ ๊ผญ ์์๋๋๋ก ํ์!
๊ทธ ๋ค์ ํผ๋์ ์ค ๊ฒ ๊ฐ์ ๋น๊ต์ฐ์ฐ์ ๋ณด๋๋ก ํ์.
<script>
// ๋ชจ๋ true๋ฅผ ๋ฐํํ๋ค.
true == 1;
true == "1";
false == 0;
false == "0"
// false๋ฅผ ๋ฐํํ๋ค.
true == "true";
false == "false";
</script>
์ฐ์ ๋ถ๋ฆฌ์ธ ํ์
์ true
์ ์ซ์ ํ์
1
์ ๊ฐ์ผ๋ฉฐ ๋๋ฑ ์ฐ์ฐ์ ==
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ํ์
"1"
๊ณผ ๋น๊ตํด๋ true
๋ฅผ ๋ฐํํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ๋ฆฌ์ธ ํ์
์ false
๋ ์ซ์ ํ์
0
๊ณผ ๊ฐ์ผ๋ฉฐ, ๋ฌธ์์ด ํ์
"0"
๊ณผ ๋น๊ตํด๋ true
๋ฅผ ๋ฐํํ๋ค.
ํ์ง๋ง ๋ถ๋ฆฌ์ธ ํ์
true
, false
๊ฐ๊ฐ ๋ฌธ์์ด ํ์
"true"
, "false"
๋ ๊ฐ์ด ๋ค๋ฅด๋ค๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ false
๊ฐ ๋ฐํ๋๋ค.
์์ ์์ ์ฝ๋๋ณด๋ค ๋ ํผ๋์ ์ผ์ผํค๋ ๋น๊ต์ฐ์ฐ์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค.
์ ๋ฆฌํ๋ ์๋์ ๊ฒ๋ค์ ์ดํดํ๊ธฐ ๋ณด๋จ ์๊ธฐ๋ฅผ ํ๋ ๊ฒ์ด ์ข๋ค.
<script>
0 == '' // true
false == '' // true
</script>
๋น ๋ฌธ์์ด ''
์ false
์ 0
๊ณผ ๊ฐ๋ค.
<script>
false == null // false
false == undefined // false
null == undefined // true
</script>
null
์ ์ด์ ๊ฒ์๋ฌผ์์ ์ค๋ช
ํ๋ฏ์ด ์๋์ ์ผ๋ก ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ช
์ํ๋ ํ์
์ด๋ค. ํ์ง๋ง null
์ ํ์
์ ์์๋ณด๋ฉด object
ํ์
์ผ๋ก ์ถ๋ ฅ์ด ๋๋ค. ์ด๊ฒ์ ์ด์ ๊ฒ์๋ฌผ์์ ์ค๋ช
ํ๋ฏ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ๋ฐ์ "๋ธ๋๋ ์์ดํฌ"๊ฐ ์ค์์์ ์ธ์ ํ ๋ฐ ์๋ค.
์๋ฌดํผ null
๊ณผ false
๋ ๊ฐ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ false
์ด๋ฉฐ, undefined
๋ํ false
์ ๊ฐ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ false
๊ฐ ๋ฐํ๋๋ค.
undefined
์ ๋ฐ์ดํฐ ํ์ ์undefined
์ด๋ฉฐnull
์ ๊ฐ๋ฐ์์ ์ค์์ด์ง๋ง ๋ฐ์ดํฐ ํ์ ์object
์ด๋ค. ๋ช ์ฌํ๋๋ก ํ์!
ํ์ง๋ง null
๊ณผ undefined
๋ ๊ฐ์ด ๊ฐ๋ค๊ณ ํ์ฌ true
๋ฅผ ๋ฐํํ๋ค. ๐คฆ
<script>
NaN == NaN // false
NaN === NaN // false
</script>
์ซ์ ํ์
์ด์ง๋ง ์ซ์๊ฐ ์๋๋ผ๋ ๋ป์ ๊ฐ์ง NaN
๋ NaN
๊ณผ ๋น๊ตํ๋ฉด false
๋ฅผ ๋ฐํํ๊ณ ๋ฐ์ดํฐ ํ์
๊น์ง ๋น๊ตํ๋ ์ผ์น ์ฐ์ฐ์ ===
๋ก ๋น๊ต๋ฅผ ํด๋ ๋๊ฐ์ด false
์ด๋ค.
<script>
isNaN(undefined) // true
isNaN(null) // false
isNaN(NaN) // true
Number.isNaN(undefined) // false
Number.isNaN(null) // false
Number.isNaN(NaN) // true
</script>
isNaN(value)
ํจ์ isNaN()
๋ ์ด๋ค ๊ฐ์ด NaN
์ธ์ง ํ๋ณํ์ฌ ๋ถ๋ฆฌ์ธ ํ์
์ ๊ฐ์ ๋ฐํํ๋ค.
ํ์ง๋ง MDN์์๋ ๋ช๋ช์ ํผ๋์ค๋ฌ์ด ์ผ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ Number.isNaN
์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๊ถ์ฅํ๊ณ ์๋ค.
Number.isNaN(value)
๋ฉ์๋ Number.isNaN()
๋ ์ฃผ์ด์ง ๊ฐ์ด NaN
์ธ์ง ํ๋ณํ๋ค. isNaN()
ํจ์์ ๋ ์๊ฒฉํ ๋ฒ์ ์ด๋ผ๊ณ ์ค๋ช
๋์ด ์๋ค. Number.isNaN()
๋ ์ฃผ์ด์ง ๊ฐ์ด '์ซ์ ํ์
'์ด๊ณ NaN
์ด๋ฉด true
, ์๋๋ฉด false
๋ฅผ ์ถ๋ ฅํ๋ค.
<script>
![] // false
!{} // false
</script>
๋ถ์ ๋
ผ๋ฆฌ ์ฐ์ฐ์ !
๋ฅผ ํตํด ๋น ๋ฐฐ์ด []
๊ณผ ๋น ๊ฐ์ฒด {}
๊ฐ ๋ฐํ๊ฐ์ด false
๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ ๋ค true
์ธ ๊ฐ์ด๋ผ๋ ๊ฒ์ด๋ค.
์๋์์ ๊ฐ์ฅ ์ฃผ์ํด์ผํ ๋ถ๋ถ์ !![]
, !!{}
, !!""
์ด๋ค.
์๊ธฐํ๋๋ก ํ๋ค!
<script>
!!undefined // falsy
!!null // falsy
!!NaN // falsy
!!Infinity // true
!![] // true
!!{} // true
!!"" // falsy
!!0 // falsy
!!"hello world" // true
!!-100 // true
</script>
๋ถ๋ฆฌ์ธ ํ์ ์ ๊ฐ์ '์ซ์ ํ์ '์ ๊ฐ์ผ๋ก ํ ๋ณํ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
<script>
// ์ฐ์ฐ์ '+'๋ฅผ ๊ฐ์ ๋ถ์ฌ์ฃผ๋ฉด ์ซ์ ํ์
์ด ๋๋ค.
+false // 0
+true // 1
// ์ฐ์ฐ์ '*'๋ฅผ ํตํด 1์ ๊ณฑํด์ฃผ๋ฉด ์ซ์ ํ์
์ด ๋๋ค. ๊ดํธ๋ฅผ ๋ฐ๋์ ๋ฌถ์ด์ค ๊ฒ
(false * 1) // 0
(true * 1) // 1
</script>
์ ๋ฆฌํ๋ฉด์ ๋๋ ์ ์ ๋ถ๋ฆฌ์ธ ํ์ ์ ๊ฐ๋ค์ ์ดํด๋ณด๋ค ์ธ์์ผํ๋ ๊ฒ์ด ๋ง์ ๊ฒ ๊ฐ๋ค.
์ด์ ์ ๋ด๊ฐ ๊ณต๋ถํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๊ฒฝ์ฐ๊ฐ ์์ด์ ๋ค์ ํ๋ฒ ๋ณต์ต์ ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
์ ์ ๋ ๊ณต๋ถํ ์์ด ๋์ด๋์ ๊ฑฑ์ ์ด ๋๋ค. ๊ทธ๋๋ ๊พธ์คํ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ์ฃผ 2~3ํ ํ๋ ๊ฒ์ ๋ค์ ๋ชฉํ๋ก ํ๋ ค๊ณ ํ๋ค.
๋งค์ผ ํ๋ฉด์ ๋์ ํ์ด์ค๋ฅผ ๋์น๋ฉด ๋ด๊ฐ ์์์ผ ํ๋ ๋ถ๋ถ์ ํ๋ฒ์ ๋์น ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค..
๋ด ํ์ด์ค๋ ๋ด๊ฐ ๊ด๋ฆฌํด์ผํจ์ ๋ผ์ ๋ฆฌ๊ฒ ๋๋ผ๋ ์ค์ด๋ค...