wa_ter_ve

Javascript 1-4 μ—°μ‚°μž λ³Έλ¬Έ

곡뢀/GDG

Javascript 1-4 μ—°μ‚°μž

수win 2024. 9. 30. 22:13

πŸ“Œ 1. μ‚°μˆ  μ—°μ‚°μž (Arithmetic Operators)

+ : λ§μ…ˆ
- : λΊ„μ…ˆ
* : κ³±μ…ˆ
/ : λ‚˜λˆ—μ…ˆ
% : λ‚˜λ¨Έμ§€ μ—°μ‚° (λ‚˜λˆ—μ…ˆμ˜ λ‚˜λ¨Έμ§€λ₯Ό λ°˜ν™˜)
++ : 증가 μ—°μ‚°μž (값을 1 증가)
-- : κ°μ†Œ μ—°μ‚°μž (값을 1 κ°μ†Œ)

 

πŸ“Œ  2. ν• λ‹Ή μ—°μ‚°μž (Assignment Operators)

= : κ°’ ν• λ‹Ή
+= : λ§μ…ˆ ν›„ ν• λ‹Ή ( x = x+2λŠ” x += 2와 κ°™μŒ )
-= : λΊ„μ…ˆ ν›„ ν• λ‹Ή
*= : κ³±μ…ˆ ν›„ ν• λ‹Ή
/= : λ‚˜λˆ—μ…ˆ ν›„ ν• λ‹Ή
%= : λ‚˜λ¨Έμ§€ ν›„ ν• λ‹Ή

 

 

πŸ“Œ  3. 비ꡐ μ—°μ‚°μž (Comparison Operators)

- 두 값을 λΉ„κ΅ν•˜μ—¬ true/false λ°˜ν™˜

== : 값이 같은가? (μžλ™ ν˜• λ³€ν™˜ ν—ˆμš©)
=== : κ°’κ³Ό νƒ€μž…μ΄ λͺ¨λ‘ 같은가? (μ—„κ²©ν•œ 비ꡐ)
!= : 값이 λ‹€λ₯Έκ°€?
!== : κ°’κ³Ό νƒ€μž…μ΄ λͺ¨λ‘ λ‹€λ₯Έκ°€?
> / < : ν¬κ±°λ‚˜/μž‘μ€κ°€?
>= / <= : 이상/μ΄ν•˜μΈκ°€? 

 

console.log(5 == '5');   // true (μžλ™ ν˜• λ³€ν™˜)
console.log(5 === '5');  // false (νƒ€μž… 뢈일치)
console.log(5 != '5');   // false (μžλ™ ν˜• λ³€ν™˜ ν›„μ˜ κ°’ 일치)
console.log(5 !== '5');  // true (νƒ€μž… 뢈일치)
console.log(5 > 3);      // true
console.log(5 <= 5);     // true

 

 

 

 πŸ“Œ 4. 논리 μ—°μ‚°μž (Logical Operators)

- λΆˆλ¦¬μ–Έ κ°’κ³Ό ν•¨κ»˜ μ‚¬μš©, true/false λ°˜ν™˜

&& : 논리 AND (λͺ¨λ“  쑰건이 참일 λ•Œ true λ°˜ν™˜)
|| : 논리 OR (ν•˜λ‚˜ μ΄μƒμ˜ 쑰건이 참일 λ•Œ true λ°˜ν™˜)
! : 논리 NOT (값을 λ°˜λŒ€λ‘œ λ°”κΏˆ)

 

let a = true;
let b = false;

console.log(a && b);  // false (λ‘˜ 쀑 ν•˜λ‚˜κ°€ falseλ©΄ false)
console.log(a || b);  // true (ν•˜λ‚˜λ§Œ trueλ©΄ true)
console.log(!a);      // false (aκ°€ trueμ΄λ―€λ‘œ λ°˜λŒ€κ°’ false)

 

 

 

 πŸ“Œ 5. μ‚Όν•­ μ—°μ‚°μž (Ternary Operator)

  • 쑰건 ? 참일 λ•Œ κ°’ : 거짓일 λ•Œ κ°’
let age = 19;
let status = (age >= 19) ? "성인. μ£Όλ₯˜ 판맀 κ°€λŠ₯." : "λ―Έμ„±λ…„μž. μ£Όλ₯˜ 판맀 λΆˆκ°€λŠ₯";
console.log(status);
성인. μ£Όλ₯˜ 판맀 κ°€λŠ₯.

 

 

πŸ“Œ 6. νƒ€μž… μ—°μ‚°μž (Type Operators)

 

  • typeof : λ³€μˆ˜ λ˜λŠ” κ°’μ˜ 데이터 νƒ€μž…μ„ λ°˜ν™˜
  • instanceof : 객체가 νŠΉμ • 클래슀의 μΈμŠ€ν„΄μŠ€μΈμ§€ 확인

 

 

 

πŸ“Œ 7. λΉ„νŠΈ μ—°μ‚°μž (Bitwise Operators)

- 2μ§„μˆ˜ λΉ„νŠΈ λ‹¨μœ„λ‘œ μ—°μ‚° μˆ˜ν–‰

& : λΉ„νŠΈ AND
| : λΉ„νŠΈ OR
^ : λΉ„νŠΈ XOR
~ : λΉ„νŠΈ NOT
<< : μ™Όμͺ½ μ‹œν”„νŠΈ
>> : 였λ₯Έμͺ½ μ‹œν”„νŠΈ
>>> : λΆ€ν˜Έ μ—†λŠ” 였λ₯Έμͺ½ μ‹œν”„νŠΈ

 


πŸ“Œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ νŠΉμ„±

 

더보기

→ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ  동등 μ—°μ‚°μž(==)λŠ” 'ν˜• λ³€ν™˜'을 μˆ˜ν–‰ν•˜λŠ”λ° 이둜 인해 생긴 문제점.

 

βœ… ν˜• λ³€ν™˜ κ·œμΉ™

  • μˆ«μžμ™€ λ¬Έμžμ—΄μ„ 비ꡐ할 λ•Œ, λ¬Έμžμ—΄μ„ 숫자둜 λ³€ν™˜.
  • ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ Boolean νƒ€μž…μΌ 경우, trueλŠ” 1둜 falseλŠ” 0둜 λ³€ν™˜.
  • 객체와 숫자/λ¬Έμžμ—΄μ„ 비ꡐ할 경우, 객체λ₯Ό valueOf()λ‚˜ toString()으둜 λ³€ν™˜. (μ°Έμ‘°ν˜•μ„ 숫자, λ¬Έμžμ—΄ λ“± κΈ°λ³Έν˜•μœΌλ‘œ λ³€ν™˜ν•  수 μžˆλŠ” λ©”μ†Œλ“œλ“€ μ‚¬μš©)

 

0 == "0"  // true

    숫자 νƒ€μž…κ³Ό λ¬Έμžμ—΄ νƒ€μž… μ‚¬μ΄μ˜ 비ꡐ

    μžλ°”μŠ€ν¬λ¦½νŠΌμ˜ ν˜• λ³€ν™˜μ— μ˜ν•΄ λ¬Έμžμ—΄ "0"이 숫자 0으둜 λ³€ν™˜λ¨.

     0 == 0

    λ”°λΌμ„œ μˆ«μžν˜• 0 두 값은 μ„œλ‘œ 값이 같기에 true

 

0 == [ ]  // true

    숫자 νƒ€μž…κ³Ό 빈 λ°°μ—΄ νƒ€μž… μ‚¬μ΄μ˜ 비ꡐ

    μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 빈 배열을 숫자둜 λ³€ν™˜ ν•  λ•Œ, λ¬Έμžμ—΄λ‘œ λ³€ν™˜ ν›„ 숫자둜 λ³€ν™˜ν•¨.

    빈 λ°°μ—΄ [ ] → 빈 λ¬Έμžμ—΄ " " → 숫자 0

     0 == 0

    λ”°λΌμ„œ μˆ«μžν˜• 0 두 값은 μ„œλ‘œ 값이 같기에 true

 

"0" == [ ]  // false

    λ¬Έμžμ—΄κ³Ό μ°Έμ‘°ν˜•(λ°°μ—΄) μ‚¬μ΄μ˜ 비ꡐ 

    빈 λ°°μ—΄ [ ] → 빈 λ¬Έμžμ—΄ " " λ³€ν™˜.

     "0" == " "

    문자 νƒ€μž… 0κ³Ό 빈 λ¬Έμžμ—΄ " "은 값이 같지 μ•ŠκΈ°μ— false

 

 

=== μ—°μ‚°μžλ‘œ μˆ˜ν–‰ν–ˆμ„ μ‹œμ—λŠ”, λͺ¨λ‘ false (ν˜• λ³€ν™˜ 적용X)

 

 

(0.1 + 1.1 == 1.2)   // false

더보기

Why?

→ 뢀동 μ†Œμˆ˜μ  정밀도 문제

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 숫자 μ €μž₯ ν˜•μ‹(64λΉ„νŠΈ IEEE 754ν˜•μ‹ μ‚¬μš©)은 μ†Œμˆ˜μ μ„ μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•˜κΈ°μ— ν•œκ³„κ°€ 있음.

일뢀 μ†Œμˆ˜λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„μ΄ λΆˆκ°€λŠ₯ν•˜μ—¬ κ·Όμ‚¬κ°’μœΌλ‘œ μ €μž₯함.

 

μœ„ μ˜ˆμ‹œμ—μ„œ 보면, 0.1κ³Ό 같은 μˆ«μžλŠ” 2μ§„μˆ˜λ‘œ ν‘œν˜„μ΄ λΆˆκ°€λŠ₯ ν•˜μ—¬ μ €μž₯λ˜λŠ” 값이 μ •ν™•νžˆ 0.1이 μ•„λ‹˜.

λ”°λΌμ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진 λ‚΄μ—μ„œ κ³„μ‚°λœ 값이 μš°λ¦¬κ°€ μƒκ°ν•˜λŠ” 닡인 1.2κ³Ό 차이가 μžˆκΈ°μ— 결과적으둜 falseκ°€ λ°˜ν™˜λœ 것.

 

 

* 뢀동 μ†Œμˆ˜μ  문제 ν•΄κ²° 방법:

μ†Œμˆ˜μ  μ•„λž˜ 였차 λ²”μœ„λ₯Ό μ„€μ •ν•˜μ—¬ 비ꡐ.

 

 

 

'곡뢀 > GDG' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Javascript 2 DOM  (5) 2024.10.07
GDG-WEB 2μ£Όμ°¨ 과제  (0) 2024.10.01
Javascript 1-3 μ œμ–΄λ¬Έ  (0) 2024.09.30
Javascript 1-2 λ³€μˆ˜μ™€ 데이터 νƒ€μž…  (0) 2024.09.29
Javascript 1-1 κΈ°λ³Έ κ°œλ…  (0) 2024.09.29