Front-End/JavaScript

[JavaScript] 05. μ—°μ‚°μž

Bigone17 2022. 1. 24. 14:16

🟑 1. μ—°μ‚°μž(Operator)

- μ—°μ‚°μ΄λž€ μˆ˜λ‚˜ 식을 μΌμ •ν•œ κ·œμΉ™μ— 따라 κ³„μ‚°ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ—°μ‚°μžλŠ” μ–΄λ– ν•œ 연산을 ν•˜λŠ” 것인지 μ˜λ―Έν•˜λŠ” κΈ°ν˜Έμž…λ‹ˆλ‹€. μ—°μ‚°μ˜ λŒ€μƒμ„ ν”Όμ—°μ‚°μž(Operand)라 ν•©λ‹ˆλ‹€. 

- μ—°μ‚°μžμ˜ μ’…λ₯˜λŠ” μ—¬λŸ¬ 가지가 μžˆμ§€λ§Œ, λ³Έ κΈ€μ—μ„œλŠ” (μ‚°μˆ , ν• λ‹Ή, 비ꡐ, μ‚Όν•­ 쑰건, 논리, μ‰Όν‘œ, κ·Έλ£Ή, typeof) 8κ°€μ§€μ˜ μ—°μ‚°μžλ₯Ό μ„€λͺ…ν•˜κ³ μž ν•©λ‹ˆλ‹€.

 

 

🟑 2. μ‚°μˆ  μ—°μ‚°μž (Arithmetic Operator)

 - μ‚°μˆ  μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžλ₯Ό λŒ€μƒμœΌλ‘œ μˆ˜ν•™μ  계산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. μ‚°μˆ  연산이 λΆˆκ°€λŠ₯ν•  κ²½μš°μ—λŠ” NaN(Not a Number)을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

🟣 2.1 이항 μ‚°μˆ  μ—°μ‚°μž

  - 이항 μ‚°μˆ  μ—°μ‚°μžλŠ” 2개의 ν”Όμ—°μ‚°μžλ₯Ό μ—°μ‚°ν•©λ‹ˆλ‹€.

이항 μ‚°μˆ  μ—°μ‚°μž μ„€λͺ…
+ λ§μ…ˆ
- λΊ„μ…ˆ
* κ³±μ…ˆ
/ λ‚˜λˆ—μ…ˆ
% λ‚˜λ¨Έμ§€
 1 + 2 // 3 -> ν”Όμ—°μ‚°μž : 1, 2  μ—°μ‚°μž : +
 4 - 1 // 3 -> ν”Όμ—°μ‚°μž : 1, 4  μ—°μ‚°μž : -
 1 * 3 // 3 -> ν”Όμ—°μ‚°μž : 1, 3  μ—°μ‚°μž : *
 6 / 2 // 3 -> ν”Όμ—°μ‚°μž : 2, 6  μ—°μ‚°μž : /
 7 % 4 // 3 -> ν”Όμ—°μ‚°μž : 4, 7  μ—°μ‚°μž : %

 

 

 πŸŸ£ 2.2 단항 μ‚°μˆ  μ—°μ‚°μž

  - 단항 μ‚°μˆ  μ—°μ‚°μžλŠ” 1개의 ν”Όμ—°μ‚°μžλ₯Ό μ—°μ‚°ν•©λ‹ˆλ‹€.

단항 μ‚°μˆ  μ—°μ‚°μž μ„€λͺ…
++ 값이 1 증가
-- 값이 1 κ°μ†Œ
+ λ‹€λ₯Έ 효과 μ—†μŒ.
- λΆ€ν˜Έλ₯Ό λ°˜μ „μ‹œν‚¨λ‹€. 음수->μ–‘μˆ˜ , μ–‘μˆ˜->음수

- (++), (--) μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžλ₯Ό κΈ°μ€€μœΌλ‘œ μ•žμ— μžˆλƒ, 뒀에 μžˆλƒμ— 따라 μ˜λ―Έκ°€ 쑰금 λ‹€λ¦…λ‹ˆλ‹€. ν”Όμ—°μ‚°μžμ˜ μ•žμ— 있으면 μ „μœ„ 연산을 ν•˜κ²Œ λ˜μ–΄, λ‹€λ₯Έ 연산보닀 λ¨Όμ € 진행이 λ©λ‹ˆλ‹€.  ν”Όμ—°μ‚°μž 뒀에 있으면 ν›„μœ„ 연산을 ν•˜κ²Œ λ˜μ–΄, λ‹€λ₯Έ 연산이 λλ‚œ λ’€ 진행이 λ©λ‹ˆλ‹€.

let oper = 10;
let result;

// μ„ λŒ€μž… ν›„μœ„μ¦κ°€
result = oper++;
console.log(result, oper); // 10, 11 -> result에 10을 λŒ€μž… ν›„ oper의 값을 1 증가

// μ„ μœ„μ¦κ°€ ν›„λŒ€μž…
result = ++oper;
console.log(result, oper); // 12, 12 -> oper의 값을 1 μ¦κ°€μ‹œν‚¨ ν›„ result에 λŒ€μž…

// μ„ λŒ€μž… ν›„μœ„κ°μ†Œ
result =  oper--;
console.log(result, oper); // 12, 11 -> result에 12λ₯Ό λŒ€μž… ν›„ oper의 값을 1 κ°μ†Œ

// μ„ μœ„κ°μ†Œ ν›„λŒ€μž…
result = --oper;
console.log(result, oper); // 10, 10 -> oper의 값을 1 κ°μ†Œμ‹œν‚¨ ν›„ result에 λŒ€μž…

 

- (+)단항 μ—°μ‚°μžλŠ” 숫자 μ—°μ‚°μ—μ„œλŠ” μ–΄λ– ν•œ νš¨κ³Όλ„ μ—†μ§€λ§Œ, ν”Όμ—°μ‚°μžκ°€ μˆ«μžκ°€ μ•„λ‹Œ κ²½μš°μ—λŠ” 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜μ‹œν‚΅λ‹ˆλ‹€. μ΄λ•Œ ν”Όμ—°μ‚°μžκ°€ 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜λ˜λŠ” 것이 μ•„λ‹Œ μƒˆλ‘œμš΄ 값이 생성이 λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

+17 // 17
+'17' // 17
+true // 1
+false // 0

 

- (-)단항 μ—°μ‚°μžλŠ” 숫자 μ—°μ‚°μ—μ„œλŠ” λΆ€ν˜Έλ₯Ό λ°”κΎΈκ³ , ν”Όμ—°μ‚°μžκ°€ 숫자 νƒ€μž…μ΄ 아닐 λ•ŒλŠ” 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.

-17 // -17
-'17' // -17
-true // 1
-false // 0

 

 

 πŸŸ£ 2.3 λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μž

  - (+) μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μž 쀑에 ν•˜λ‚˜ 이상이 λ¬Έμžμ—΄μΈ 경우 λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μžλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

"1" + "μ•ˆλ…•ν•˜μ„Έμš”" // "1μ•ˆλ…•ν•˜μ„Έμš”"
6 + "17" // "617"

 

 

🟑 3. ν• λ‹Ή μ—°μ‚°μž (Assignment Operator)

- ν• λ‹Ή μ—°μ‚°μžλŠ” 였λ₯Έμͺ½μ— μžˆλŠ” ν”Όμ—°μ‚°μžμ˜ μ—°μ‚° κ²°κ³Όλ₯Ό μ™Όμͺ½μ— μžˆλŠ” λ³€μˆ˜μ— ν• λ‹Ήν•©λ‹ˆλ‹€.

ν• λ‹Ή μ—°μ‚°μž ν‘œκΈ° 동일 ν‘œν˜„
= x = y x = y
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y
let x;

x = 5; // 5 -> 5 λŒ€μž…
x += 5; // 10 -> 5 + 5
x -= 4; // 6 -> 10 -4
x *= 5; // 30 -> 6 * 5
x /= 3; // 10 -> 30 / 3
x %= 3; // 1 -> 10 % 3

 

 

🟑  4. 비ꡐ μ—°μ‚°μž (Comparison Operator)

 - 비ꡐ μ—°μ‚°μžλŠ” μ™Όμͺ½ ν”Όμ—°μ‚°μžμ™€ 였λ₯Έμͺ½ ν”Όμ—°μ‚°μžλ₯Ό λΉ„κ΅ν•˜μ—¬ boolean 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

 πŸŸ£ 4.1 동등/ 일치 비ꡐ μ—°μ‚°μž

비ꡐ μ—°μ‚°μž 의미 ν‘œν˜„ μ„€λͺ…
== 동등 비ꡐ  x == y x와 y의 값이 κ°™λ‹€
=== 일치 비ꡐ x === y x와 y의 κ°’κ³Ό νƒ€μž…μ΄ κ°™λ‹€
!= λΆ€λ“± 비ꡐ x != y x와 y의 값이 λ‹€λ₯΄λ‹€
!== 뢈일치 비ꡐ x !== y x와 y의 κ°’κ³Ό νƒ€μž…μ΄ λ‹€λ₯΄λ‹€
// 동등 비ꡐ
10 == 10; // true
10 == '10'; // true
10 == 11; // false


// 일치 비ꡐ
10 === 10; // true
10 === '10'; // false --> 값이 κ°™μ§€λ§Œ νƒ€μž…μ΄ 닀름


// λΆ€λ“± 비ꡐ
10 != 10; // false
10 != 11; // true -> 값이 닀름
10 != '11'; // true -> κ°’κ³Ό νƒ€μž…μ΄ 닀름



// 뢈일치 비ꡐ
10 !== 10; // false
10 !== 11; // false -> 값이 λ‹€λ₯΄μ§€λ§Œ νƒ€μž…μ΄ κ°™μŒ
10 !== '11'; // true -> κ°’κ³Ό νƒ€μž…μ΄ 닀름

 

 

 πŸŸ£ 4.2 λŒ€μ†Œ 관계 비ꡐ μ—°μ‚°μž

 - λŒ€μ†Œ 관계 비ꡐ μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 크기λ₯Ό λΉ„κ΅ν•˜μ—¬ boolean κ°’μœΌλ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

λŒ€μ†Œ 관계 비ꡐ μ—°μ‚°μž ν‘œν˜„ μ„€λͺ…
> x > y xκ°€ y보닀 크닀
< x < y xκ°€ y보닀 μž‘λ‹€
>= x >= y xκ°€ y보닀 ν¬κ±°λ‚˜ κ°™λ‹€
<= x <= y xκ°€ y보닀 μž‘κ±°λ‚˜ κ°™λ‹€
10 > 1 // true
10 > 10 // false
10 > 11 //false


10 < 1 // false
10 < 10 // false
10 < 11 //true


10 >= 1 // true
10 >= 10 // true
10 >= 11 //false


10 <= 1 // false
10 <= 10 // true
10 <= 11 //true

 

 

🟑 5. μ‚Όν•­ 쑰건 μ—°μ‚°μž(Ternary Operator)

 - μ‚Όν•­ 쑰건 μ—°μ‚°μžλŠ” μ‘°κ±΄μ‹μ˜ 결과에 따라 λ°˜ν™˜ν•  값을 κ²°μ •ν•©λ‹ˆλ‹€.

쑰건식 ? 쑰건식이 true일 λ•Œ λ°˜ν™˜ν•  κ°’ : 쑰건식이 false일 λ•Œ λ°˜ν™˜ν•  κ°’

let name = 'bigone';

// name이 'bigone'이면 'bigoneμž…λ‹ˆλ‹€!'λ₯Ό λ°˜ν™˜, μ•„λ‹ˆλ©΄ 'bigone이 μ•„λ‹™λ‹ˆλ‹€!'λ₯Ό λ°˜ν™˜
let result = name === 'bigone' ? 'bigoneμž…λ‹ˆλ‹€!' : 'bigone이 μ•„λ‹™λ‹ˆλ‹€!';

// 1. name이 'bigone'인지 νŒλ‹¨ν•˜μ—¬ boolean κ°’(true, false) λ°˜ν™˜
// 2.1 λ°˜ν™˜λœ boolean 값이 true이면 result에 'bigoneμž…λ‹ˆλ‹€!'λ₯Ό ν• λ‹Ή
// 2.2 λ°˜ν™˜λœ boolean 값이 false이면 result에 'bigone이 μ•„λ‹™λ‹ˆλ‹€!'λ₯Ό ν• λ‹Ή


console.log(result) // 'bigoneμž…λ‹ˆλ‹€!'

 

 

🟑 6. 논리 μ—°μ‚°μž(Logical Operator)

- 논리 μ—°μ‚°μžλŠ” μ™Όμͺ½ ν”Όμ—°μ‚°μžμ™€ 였λ₯Έμͺ½ ν”Όμ—°μ‚°μžλ₯Ό 논리 μ—°μ‚°ν•©λ‹ˆλ‹€. 

논리 μ—°μ‚°μž 의미
|| 논리합(OR)
&& 논리곱(AND)
! λΆ€μ •(NOT)
// 논리합 μ—°μ‚°μž ||
true || true   // true
true || false  // true
false || true  // true
false || false // false

// 논리곱 μ—°μ‚°μž &&
true && true   // true
true && false  // false
false && true  // false
false && false // false

// 논리 λΆ€μ • μ—°μ‚°μž !
!true  // false
!false // true

 

- 논리 λΆ€μ • μ—°μ‚°μž(!)λŠ” μ–Έμ œλ‚˜ boolean 값을 λ°˜ν™˜ ν•˜μ§€λ§Œ, 논리합 μ—°μ‚°μž(||)와 논리곱 μ—°μ‚°μž(&&)λŠ” μΌλ°˜μ μœΌλ‘œλŠ” boolean값을 λ°˜ν™˜ν•˜μ§€λ§Œ, λ°˜λ“œμ‹œ boolean값을 λ°˜ν™˜ν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.

// 암묡적 νƒ€μž… λ³€ν™˜
!0 // true


// 단좕 평가

'Cat' && 'Dog' // 'Dog'
// &&의 경우 λͺ¨λ“  ν”Όμ—°μ‚°μžκ°€ true인 κ²½μš°μ— trueλ₯Ό λ°˜ν™˜ν•œλ‹€. 
// κ·ΈλŸ¬λ―€λ‘œ λͺ¨λ‘ True일 κ²½μš°μ— λ§ˆμ§€λ§‰ 값이 λ°˜ν™˜μ΄ λœλ‹€.
'Cat' && 'Dog' && 'Bird' // 'Bird'


'Cat' || 'Dog' // 'Cat'
// ||의 경우 ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜λΌλ„ true인 κ²½μš°μ— trueλ₯Ό λ°˜ν™˜ν•œλ‹€.
// κ·ΈλŸ¬λ―€λ‘œ 처음으둜 λ‚˜μ˜¨ true 값을 λ°˜ν™˜ν•œλ‹€.
false || 'Cat' || 'Dog' // 'Cat'

 

 

🟑 7. μ‰Όν‘œ μ—°μ‚°μž

 - μ‰Όν‘œ μ—°μ‚°μž(,)λŠ” μ™Όμͺ½ ν”Όμ—°μ‚°μžλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ ν‰κ°€ν•˜κ³  λ§ˆμ§€λ§‰ ν”Όμ—°μ‚°μžμ˜ 평가 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

let x, y, z;
x = 5, y = 10, z = 15; // 15

z+=1, y+=2, x+=3; // 8

 

 

🟑 8. κ·Έλ£Ή μ—°μ‚°μž

- κ·Έλ£Ή μ—°μ‚°μžλŠ” κ·Έλ£Ή λ‚΄μ˜ ν‘œν˜„μ‹μ„ μ΅œμš°μ„ μœΌλ‘œ μ—°μ‚°ν•©λ‹ˆλ‹€.

5 * 3 + 2 // 17

5 * (3 + 2) // 25

 

 

🟑 9. typeof μ—°μ‚°μž

- typeof μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 데이터 νƒ€μž…μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

typeof ''              // "string"
typeof 1               // "number"
typeof NaN             // "number"
typeof true            // "boolean"
typeof undefined       // "undefined"
typeof Symbol()        // "symbol"
typeof null            // "object"
typeof []              // "object"
typeof {}              // "object"
typeof new Date()      // "object"
typeof function () {}  // "function"

// μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 섀계 였λ₯˜
typeof null // "object"

 

 

 

πŸ“ μ •λ¦¬

  • μ—°μ‚°μžλŠ” μ–΄λ– ν•œ 연산을 할지 ν‘œν˜„ν•˜λŠ” κΈ°ν˜Έμ΄λ‹€.
  • μ‚°μˆ  μ—°μ‚°μžλŠ” 주둜 숫자 νƒ€μž…μ„ μ—°μ‚°ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
  • 비ꡐ μ—°μ‚°μžλŠ” 두 ν”Όμ—°μ‚°μžλ₯Ό 비ꡐ할 λ•Œ μ‚¬μš©ν•œλ‹€.
  • μ‚Όν•­ 쑰건 μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 결과에 따라 λ°˜ν™˜ν•΄μ•Ό λ˜λŠ” 값이 λ‘˜ 쀑 ν•˜λ‚˜ 일 λ•Œ μ‚¬μš©ν•œλ‹€.
  • 논리 μ—°μ‚°μžλŠ” 논리적인 연산을 ν•˜κ³  싢을 λ•Œ μ‚¬μš©ν•œλ‹€.
  • μ‰Όν‘œ μ—°μ‚°μžλŠ” 주둜 μ—¬λŸ¬ 개의 λ³€μˆ˜λ₯Ό ν•œ λ²ˆμ— 각각 μ—°μ‚°ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
  • κ·Έλ£Ή μ—°μ‚°μžλŠ” μ–΄λ– ν•œ 연산을 μ΅œμš°μ„ μœΌλ‘œ ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
  • typeof μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 데이터 νƒ€μž…μ„ κ΅¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

 

 

 

κΈ΄ κΈ€ μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ :) 
ν‹€λ¦° λ‚΄μš©μ΄ μžˆκ±°λ‚˜, 덧뢙일 λ‚΄μš©μ΄ μžˆλ‹€λ©΄ μ–Έμ œλ“ μ§€ λŒ“κΈ€ λ‹¬μ•„μ£Όμ„Έμš”!
제 글이 μ‘°κΈˆμ΄λ‚˜λ§ˆ μ½μœΌμ‹  λΆ„λ“€μ—κ²Œ 도움이 λ˜λ„λ‘ λ…Έλ ₯ν•˜κ² μŠ΅λ‹ˆλ‹€
λ‹€μŒ νŽΈμ— λ΄¬μš”~

 

728x90
λ°˜μ‘ν˜•