아이딕
아이딕 IT블로그
아이딕
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Algorithm (9)
      • BackJoon (0)
      • Programmers (5)
      • Data Structure (4)
    • Java (5)
    • Spring (1)
    • SQL (2)
      • MSSQL (1)
    • JavaScript (7)
    • React (3)
    • HTML (0)
    • CSS (1)
    • Build Tool (0)
      • Gradle (0)
      • Maven (0)
    • Tomcat (1)
    • Git (2)
    • IDE (3)
    • Error Log (1)
    • 개발 지식 (9)
    • 도서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • GitHub
  • JavaScript
  • 호이스팅
  • programmers
  • springboot
  • 함수레벨스코프
  • 인텔리제이
  • react
  • 리액트
  • Algorithm
  • 스코프
  • codingTest
  • 자바자료구조
  • VSCode
  • Java
  • ES6
  • Git
  • 알고리즘
  • IntelliJ
  • 코딩테스트
  • 자바스크립트
  • java Data Structure
  • JVM
  • 블록레벨스코프
  • 자료구조
  • 프로그래머스
  • Java 문자열 처리 최적화
  • 변수호이스팅
  • 자바
  • 깃허브

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이딕

아이딕 IT블로그

JavaScript

[Javascript] ==와===의 차이

2023. 1. 8. 22:12
728x90
반응형

Javascript를 사용 중에 값을  비교해야 할 때가 있는데, 이때 비교연산자인 ==연산자와 ===연산자를 사용한다.

두 연산자 모두 비교한 피연산자 값이 일치하면 ture값을 반환하고 비교한 피연산자 값이 일치하지 않으면 false를 반환한다. 값을 비교할 때, 가능한 ==연산자를 사용하지 않도록 하고, ===연산자를 사용할 것을 권장하고 있다.

 

== 연산자는 Equal Operator(비교연산자), ===연산자는 Strict Equal Operator(엄격한 비교 연산자)이다.

두 연산자를 코드를 통해 쉽게 예를 들어 보자면 아래와 같다. 

 

1. ==연산자

100 == 100        // true
100 == '100'      // true
1 == true         // true
true == 'true'    // true
null == undefined // true

 ==연산자는 두 값을 비교해서 같으면 true 다르면 false 값을 리턴하되, 두 피연산자 값이 서로 타입이 다를 경우에는 자동으로 일부 피연산자의 타입을 변환한 후에 값을 비교한다.

 

2. ===연산자 

100 === 100        // true
100 === '100'      // false
1 === true         // false
true === 'true'    // false
null === undefined // false

NaN === NaN        // false

피연산자 값의 타입이 서로 다르면 자동으로 타입을 반환해 주는 ==연산자와 달리  ===연산자는 두 피연산자 값의 타입이 서로 다르더라도 변환하지 않고 있는 그대로의 값을 비교하는 방식으로 엄격하게 값을 비교한다.

 

또한 위의 코드에서 알 수 있듯이 NaN 값은 자기 자신을 포함하여 어떠한 값과도 일치하지 않는다. 즉, NaN 값과 비교하게 되면 항상 false의 값이 반환된다. 

 

3. 권장 사항

== 연산자는 타입이 다르면 변환해주기 때문에 내가 원치 않는 값이 발생할 수 있고, 이를 판별하기가 쉽지 않다. 때문에 가능한 == 연산자를 사용하지 않고 확실한 비교가 보장되는 ===연산자를 사용하여 변환이 필요할 때, 내가 직접 자료형을 변환하여 보다 코드의 가독성을 높이는 것을 권장한다.

728x90
반응형

'JavaScript' 카테고리의 다른 글

[JavaScript] ES5와 ES6 비교  (2) 2023.01.04
[Javascript] ECMAScript란? JavaScript란?  (0) 2023.01.02
[Javascript] var, let, const의 차이점 (비교)  (0) 2022.12.28
[Javascript] TDZ(Temporal Dead Zone)란?  (0) 2022.12.26
[Javascript] 변수 선언, 초기화, 할당, 호이스팅, 스코프 개념 및 설명  (1) 2022.12.24
    'JavaScript' 카테고리의 다른 글
    • [JavaScript] ES5와 ES6 비교
    • [Javascript] ECMAScript란? JavaScript란?
    • [Javascript] var, let, const의 차이점 (비교)
    • [Javascript] TDZ(Temporal Dead Zone)란?
    아이딕
    아이딕
    IT, 개발, 공부, 정리, 기타

    티스토리툴바