Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

wa_ter_ve

Javascript 1-4 연산자 본문

공부/자바스크립트

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가 반환된 것.

 

 

* 부동 소수점 문제 해결 방법:

소수점 아래 오차 범위를 설정하여 비교.

 

 

 

'공부 > 자바스크립트' 카테고리의 다른 글

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