Published 2022. 4. 7. 04:50
7์ฅ ์ฐ์ฐ์(Operator)
- ์ฐ์ฐ์(Operator): ํ๋ ์ด์์ ํํ์์ ๋์์ผ๋ก ์ฐ์ , ํ ๋น, ๋น๊ต, ๋ ผ๋ฆฌ ํ์ , ์ง์ ์ฐ์ฐ ๋ฑ์ ์ํํด ํ๋์ ๊ฐ์ ๋ง๋ ๋ค.
- ํผ์ฐ์ฐ์(Operand): ์ฐ์ฐ์ ๋์
์ฐ์ ์ฐ์ฐ์(Arithmetic Operator)
- ์ฐ์ ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๋ฅผ ๋์์ผ๋ก ์ํ์ ๊ณ์ฐ์ ์ํํด ์๋ก์ด ์ซ์ ๊ฐ์ ๋ง๋ ๋ค. ์ฐ์ ์ด ๋ถ๊ฐํ ๊ฒฝ์ฐ NaN์ ๋ฐํํ๋ค.
์ดํญ ์ฐ์ ์ฐ์ฐ์(Binary Arithmetic Operator)
- ์ดํญ ์ฐ์ ์ฐ์ฐ์๋ 2๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ฐ์ ์ฐ์ฐํ์ฌ ์ซ์ ๊ฐ์ ๋ง๋ ๋ค.
๋จํญ ์ฐ์ ์ฐ์ฐ์(Unary Arithmetic Operator)
- ๋จํญ ์ฐ์ ์ฐ์ฐ์๋ 1๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ฐ์ ์ฐ์ฐํ์ฌ ์ซ์ ๊ฐ์ ๋ง๋ ๋ค.
var x = 1;
// ++์ฐ์ฐ์๋ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์๋ฌต์ ํ ๋น์ด ์ด๋ฃจ์ด์ง๋ค.
x++; // x = x+1;
console.log(x); // 2
// --์ฐ์ฐ์๋ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์๋ฌต์ ํ ๋น์ด ์ด๋ฃจ์ด์ง๋ค.
x--; // x = x-1;
console.log(x); // 1
์ฆ๊ฐ/๊ฐ์ ์ฐ์ฐ์(++ , --) ์ฐ์ฐ์๋ ์์น์ ์๋ฏธ๊ฐ ์๋ค.
- ํผ์ฐ์ฐ์ ์์ ์์นํ ์ ์ ์ฆ๊ฐ/๊ฐ์ ์ฐ์ฐ์๋ ๋จผ์ ํผ์ฐ์ฐ์์ ๊ฐ์ ์ฆ๊ฐ/๊ฐ์์ํจ ํ, ๋ค๋ฅธ ์ฐ์ฐ์ ์ํํ๋ค.
- ํผ์ฐ์ฐ์ ๋ค์ ์์นํ ํ์ ์ฆ๊ฐ/๊ฐ์ ์ฐ์ฐ์๋ ๋จผ์ ๋ค๋ฅธ ์ฐ์ฐ์ ์ํํ ํ, ํผ์ฐ์ฐ์์ ๊ฐ์ ์ฆ๊ฐ/๊ฐ์์ํจ๋ค.
var x = 5, result;
// ์ ํ ๋น ํ์ฆ๊ฐ
result = x++;
console.log(result, x); // 5, 6
// ์ ์ฆ๊ฐ ํํ ๋น
result = ++x;
console.log(result, x); // 7, 7
// ์ ํ ๋น ํ๊ฐ์
result = x--;
console.log(result, x); // 7, 6
// ์ ๊ฐ์ ํํ ๋น
result = --x;
console.log(result, x); // 5, 5
๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์
+
์ฐ์ฐ์๋ ํผ์ฐ์ฐ์ ์ค ํ๋ ์ด์์ด ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ก ๋์ํ๋ค.
// ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์
'1' + 2; // '12'
1 + '2'; // '12'
// ์ฐ์ ์ฐ์ฐ์
1 + 2 ; // 3
// true๋ 1๋ก ํ์
์ด ๋ณํ๋๋ค.
1 + true; // 2
// false๋ 0์ผ๋ก ํ์
๋ณํ๋๋ค.
// true, false๋ ๊ฐ๊ฐ 1๊ณผ 0์ ๊ฐ์ ๊ฐ๊ณ ์๊ธฐ์ ์ฐ์ ์ฐ์ฐ์๋ฅผ ํตํด ์๋ฌต์ ํ๋ณํ(Implicit Coercion)๋ ์ํ์ด๋ค. ์๋ ๊ธ์ ์ฐธ์กฐํ์.
1 + false; // 1
// null์ 0์ผ๋ก ํ์
์ด ๋ณํ๋๋ค.
1 + null; // 1
// undefined๋ ์ซ์๋ก ํ์
๋ณํ๋์ง ์๋๋ค.
+undefined; // NaN
1 + undefined; // NaN
ํ ๋น ์ฐ์ฐ์(Assignment Operator)
- ํ ๋น ์ฐ์ฐ์๋ ์ฐํญ์ ์๋ ํผ์ฐ์ฐ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ขํญ์ ์๋ ๋ณ์์ ํ ๋นํ๋ค.
๋น๊ต ์ฐ์ฐ์(Comparison Operator)
- ๋น๊ต ์ฐ์ฐ์๋ ์ขํญ๊ณผ ์ฐํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋น๊ตํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ(Boolean) ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
๋๋ฑ/์ผ์น ๋น๊ต ์ฐ์ฐ์
- ๋๋ฑ ๋น๊ต(Loose Equality, ๋์จํ ๋น๊ต) ์ฐ์ฐ์: ์ขํญ๊ณผ ์ฐํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋น๊ตํ ๋ ์๋ฌต์ ํ์ ๋ณํ์ ํตํด ํ์ ์ ์ผ์น์ํจ ๋ค ๊ฐ๋ง ๋น๊ตํ๋ค.
- ์ผ์น ๋น๊ต(Strict Equality, ์๊ฒฉํ ๋น๊ต) ์ฐ์ฐ์: ์ขํญ๊ณผ ์ฐํญ์ ํผ์ฐ์ฐ์๊ฐ ํ์ ๋ ๊ฐ๊ณ ๊ฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์ ํํ์ฌ true๋ฅผ ๋ฐํํ๋ค. ๋ ์ค์ ํ๋๋ผ๋ ๋ค๋ฅผ ์ false๋ฅผ ๋ฐํํ๋ค.
// ๋๋ฑ ๋น๊ต
5 == 5; // true
// ํ์
์ ๋ค๋ฅด์ง๋ง ์๋ฌต์ ํ๋ณํ์ ํตํด true ๊ฐ ๋ฐํ
5 == '5'; // true
// ์ผ์น ๋น๊ต๋ฅผ ํ๋ฉด false ๊ฐ ๋ฐํ
5 === '5'; // false
// ๋จ ์ผ์น ๋น๊ต ์ฐ์ฐ์์์ NaN์ ์ฃผ์ํด์ผํ๋ค.
NaN === NaN // false
// ์ซ์๊ฐ NaN์ธ์ง ์กฐ์ฌํ๋ ค๋ฉด ๋นํธ ํจ์์ธ isNaN์ ์ฌ์ฉํด์ผํ๋ค.
isNaN(NaN); // true
isNaN(10); // false
isNaN(1 + undefined); // true
// ๋ถ๋๋ฑ ๋น๊ต ์ฐ์ฐ์ (!=)์ ๋ถ์ผ์น ๋น๊ต ์ฐ์ฐ์(!==)๋ ๋๋ฑ ๋น๊ต(==) ์ฐ์ฐ์์ ์ผ์น ๋น๊ต(===) ์ฐ์ฐ์์ ๋ฐ๋ ๊ฐ๋
์ด๋ค.
๋์ ๊ด๊ณ ๋น๊ต ์ฐ์ฐ์
- ํผ์ฐ์ฐ์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ฐํ
์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์
์กฐ๊ฑด์ ? ์กฐ๊ฑด์์ด true์ผ ๋ ๋ฐํ ๊ฐ : ์กฐ๊ฑด์์ด false์ผ ๋ ๋ฐํํ ๊ฐ
var result = scroe > 60 ? 'pass' : 'fail';
- ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์์ ์ฒซ ํผ์ฐ์ฐ์๋ ์กฐ๊ฑด์์ด๋ฏ๋ก if...else๋ฌธ์ ์ฌ์ฉํด๋ ์ ์ฌํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
var x = 2, result;
// 2 % 2๋ 0์ด๊ณ 0์ false๋ก ์๋ฌต์ ํ๋ณํ.
if(x % 2) result = 'ํ์';
else result = '์ง์';
console.log(result); // ์ง์
- ํ์ง๋ง, ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ ํํ์์ if ... else ๋ฌธ๊ณผ ์ค์ํ ์ฐจ์ด๊ฐ ์๋ค. ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ ํํ์์ ๊ฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ง๋ง if ... else ๋ฌธ์ ๊ฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
// ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ ํํ
var x = 10;
var result = x % 2 ? 'ํ์' : '์ง์';
console.log(result); // ์ง์
๋ ผ๋ฆฌ ์ฐ์ฐ์(Logical Operator)
- ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ์ฐํญ๊ณผ ์ขํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ ผ๋ฆฌ ์ฐ์ฐํ๋ค.
// ๋
ผ๋ฆฌํฉ(||) ์ฐ์ฐ์, ์ขํญ/์ฐํญ ์ค ํ ๊ฐ๋ง true ๊ฐ์ด๋ฉด true ๋ฐํ
true || true; // true
true || false; // true
false || false; // false
// ๋
ผ๋ฆฌ๊ณฑ(&&) ์ฐ์ฐ์, ์ขํญ/์ฐํญ ๋ชจ๋ true ๊ฐ์ด์ด์ผ true ๋ฐํ
true && true; // true
true && false; // false
false && false; // false
// ๋ถ์ (!) ์ฐ์ฐ์, ์ขํญ/์ฐํญ ๋น๊ตํ์ฌ false ๊ฐ์ด๋ฉด true ๋ฐํ
true != true; // false
true != false; // true
false != false; // false
typeof ์ฐ์ฐ์
- ํผ์ฐ์ฐ์์ ๋ฐ์ดํฐ ํ์ ์ 7๊ฐ์ง ๋ฌธ์์ด์ค ํ๋๋ก ๋ฐํํ๋ค.
- string
- number
- boolean
- undefined
- symbol
- object
- function
์ฐ์ฐ์ ์ฐ์ ์์
์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ธ
'๐ฅ Front-End > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] 8. IIFE & ๋ชจ๋ & ๋ค์์คํ์ด์ค (0) | 2022.04.18 |
---|---|
[JS] 7. ํํ์ & ๋ฌธ (0) | 2022.04.17 |
[JS] ๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive - ๋ฐ์ดํฐ ํ์ (0) | 2022.04.06 |
[JS] 6. ํจ์ ์ค์ฝํ & ๋ธ๋ก ์ค์ฝํ & ๋ ์์ปฌ ์ค์ฝํ (1) | 2022.04.06 |
[JS] 4. ์์์ ํ๋ณํ, ๋ช ์์ ํ๋ณํ, Nominal, ๊ตฌ์กฐํ, ๋ ํ์ดํ (0) | 2022.03.31 |