==(Equal Operator, ์ด์ค ๋ฑํธ, ๋๋ฑ ์ฐ์ฐ์)
Javascript์์ ๋๋ฑ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋๋ ๋ ๋ณ์์ ๊ฐ๋ง ์ฒดํฌํฉ๋๋ค. ๊ฐ๋ง ๊ฐ๋ค๋ฉด true๊ฐ ๋ฐํ๋ฉ๋๋ค.
<์์ 1>
var a = 3;
var b = '3';
let c = 3;
a == b; // true
a == c; // true
b == c; // true
<์์ 2>
โ 0๊ฐ์ false์ ๋์ผํ๋ฏ๋ก -> true ์ถ๋ ฅ
0 == false // true
โ ์๋ ์ ํ๋ณํ ๋น๊ต
2 == "2" // expected output: true
==(๋๋ฑ ์ฐ์ฐ์)๋ ์ ์์ ๊ฐ์ ๋น๊ตํ๊ธฐ ์ ์ ๊ฐ์ ์ ์ผ๋ก ์์์ ํ๋ณํ(Implicit Coercion)๋ฅผ ์ํํฉ๋๋ค.
๊ฐ์ ์ ์ธ ํ๋ณํ ๊ณผ์ ์ ํตํด ํผ์ฐ์ฐ์๋ค์ ๊ณตํต๋ ํ์
์ผ๋ก ๋ง๋ค๊ณ ๊ทธ ์์ ์๋ ๊ฐ๋ง์ ๋น๊ตํ๋, '๋์จํ ๋น๊ต'๋ฅผ ํฉ๋๋ค.
===(Strict Equal Operator, ์ผ์ค ๋ฑํธ, ์ผ์น ์ฐ์ฐ์)
Javascript์์ ์ผ์น ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋๋ ์๊ฒฉํ ๋์ผํ์ง๋ฅผ ์ฒดํฌํฉ๋๋ค.
๊ฐ์ด ๊ฐ์ ๋ฟ๋ง ์๋๋ผ, ์ ํ(Type)
๋ ๊ฐ์์ผ true
๊ฐ์ด ๋ฐํ๋ฉ๋๋ค.
<์์ 1>
5 === 5;
// true
'hello world' === 'hello world';
// true (๋ ๋ค String, ๋์ผํ ๊ฐ)
true === true;
// true (Booleans, ๋์ผํ ๊ฐ)
77 === '77';
// false(Number vs String)
'cat' === 'dog';
// false(๋ ๋ค String์ด์ง๋ง ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง)
false === 0;
// false(์ ํ, ๊ฐ์ด ๋ชจ๋ ๋ค๋ฆ)
<์์ 2>
โ ๋ ํผ์ฐ์ฐ์์ ์ ํ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ -> false
0 === false // expected output: false
console.log(typeof 0); // expected output: "number"
console.log(typeof false); // expected output: "boolean"
โ ๋ ํผ์ฐ์ฐ์์ ์ ํ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ -> false
2 === "2" // expected output: false
console.log(typeof 2); // expected output: "number"
console.log(typeof "2"); // expected output: "string"
===(์ผ์น ์ฐ์ฐ์)๋ ==(๋๋ฑ ์ฐ์ฐ์)์ ๋ฌ๋ฆฌ ์์์ ํ๋ณํ(Implicit Coercion) ๊ณผ์ ์ ์ํํ์ง ์๋ '์๊ฒฉํ ๋น๊ต'๋ฅผ ์ํํฉ๋๋ค.
typeof
typeof
์ฐ์ฐ์๋ undefined, null, boolean, number, string, symbol, object, function
์ Javascript๊ฐ ๊ฐ์ง 7๊ฐ์ง ๋ณ์ ํ์
์ ๊ตฌ๋ถํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
console.log(typeof undeclaredVariable); // "undefined"
console.log(typeof null); // "object"
console.log(typeof true); // "boolean"
console.log(typeof 27); // "number"
console.log(typeof 'YD'); // "string"
console.log(typeof Symbol()); // "symbol"
console.log(typeof function () {}); // "function"
console.log(typeof {}); // "object"
null์ ์ 'object'์ธ๊ฐ?
typeof
์ฐ์ฐ์๋ null
์ object
๋ผ๊ณ ํ๋จํฉ๋๋ค. null
์ object
๋ก ๋ฐํํ๋ ์ด์ ๋ Mozilla์์๋ ์ด์ ๊ฐ์ด ์ด์ผ๊ธฐํฉ๋๋ค.
๋ฐฐ์ด๋ 'object'๋ก ํํ๋จ
typeof [];
// 'object'
Javascript๋ ๋ฐฐ์ด(array) ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ์ง๋ง, typeof
๋ ๋ฐฐ์ด(array)์ ๊ตฌ๋ถํ์ง ๋ชปํฉ๋๋ค.typeof []
๋ object
๋ฅผ ๋ฐํํฉ๋๋ค.typeof
๋ ๋ฐฐ์ด์ ์๋ณํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋ Array.isArray()
๋ผ๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด๋ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๊ตฌ๋ถ์ ํด์ผ ํ๋ ์ํฉ์์๋ ๋ณ๋์ ํจ์๋ฅผ ์ ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํฉ๋๋ค.
Summary
- --: ๋ ๋ณ์์ [๊ฐ]์ ๋น๊ต
- ---: ๋ ๋ณ์์ [๊ฐ], [์ ํ]์ ๋ชจ๋ ๋น๊ต
- typeof: typeof ์ฐ์ฐ์๋ Javascript๊ฐ ๊ฐ์ง ๋ณ์ ํ์ ์ ๊ตฌ๋ถํ๋ ์ฉ๋๋ก ์ฌ์ฉ
References
'๐ฅ Front-End > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] 6. ํจ์ ์ค์ฝํ & ๋ธ๋ก ์ค์ฝํ & ๋ ์์ปฌ ์ค์ฝํ (1) | 2022.04.06 |
---|---|
[JS] 4. ์์์ ํ๋ณํ, ๋ช ์์ ํ๋ณํ, Nominal, ๊ตฌ์กฐํ, ๋ ํ์ดํ (0) | 2022.03.31 |
[JS] 3. ๊ฐ ํ์ (Value Type) & ์ฐธ์กฐ ํ์ (Reference Type) (0) | 2022.03.22 |
[JS] 2. ์์์๋ฃํ(Primitive Types) (0) | 2022.03.22 |
[JS] 1. Call Stack & Event Loop (0) | 2022.03.22 |