Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • React
  • redis
  • mysql
  • javascript
  • 알고리즘
  • 데이터 타입
  • html
  • PostgreSQL
  • Til
  • 문자열
  • 프로그래머스
  • CSS
  • 하스켈
  • Flutter
  • Rust
  • Java
  • koa
  • go
  • Haskell
  • html5

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[Javascript] 자바스크립트: '==' 와 '==='는 다르다!
프론트 엔드/Javascript

[Javascript] 자바스크립트: '==' 와 '==='는 다르다!

2022. 1. 20. 23:12
728x90

무엇이 다른가?

"=="와 "==="의 차이점은 무엇일까, 예를 들어, 숫자를 숫자 리터럴과 피교하면 '=='는 그것을 허용하지만 

'==='는 두 변수의 형식이 동일하지 않는 경우, 값뿐만 아닌 두 변수의 유형도 확인하므로, 허용하지 않는것,

즉 '==='는 'false'으로 반환하고 '=='는 'true'로 반환한다.

'==' 와 '===' 의 차이점

자바스크립트는 엄격한 비교와 유형변환 비교를 모두 지원하므로, 어떤 연산자가 어떤 비교조건에 사용되는지가 

중요하다. 위에서 말했듯, ===는 변수유형을 고려하는 반면, ==는 변수 값을 기반으로 유형을 수정한다.

다음은 자바스크립트 프로그래밍 언어에서 "==" 연산자와 "===" 연산자 사이의 두 가지 차이점들이다.


  • '==' 연산자를 이용해 서로 다른 유형의 두 변수 [값] 비교
  • '==='는 엄격한 비교를 하는 것으로 알려져 있다 ([값 & 자료형] -> true).

#간단한 예제

🔍  숫자와 불리언 비교

  • 0 값은 false와 동일하므로 -> true 출력
0 == false // true
  • 두 피연산자의 유형이 다르기 때문에 -> false 출력
2 == "2" // expected output: true
  • 두 피연산자의 유형이 다르기 떄문에 -> false
2 === "2" // expected output: false 
console.log(typeof 2);	// expected output: "number"
console.log(typeof "2");  // expected output: "string"

※ 서로 호환되지 않는 두 변수를 비교하면 컴파일 오류* 를 일으키는 자바 평등 연산자(Java Equality 연산자)와 많이 

비슷하다.

# 궁금한 케이스들

1) null와 undefined를 비교할때 어떤 결과가 나올 것인가?

  • 자동 유형변화 비교
null == undefined // expected output: true
  • 두 피연산자의 유형이 다르기 때문에 -> false
null == undefined // expected output: false 
console.log(typeof null);	// expected output: "object"
console.log(typeof undefined);  // expected output: "undefined"

2) '!=' 와 '!==' 비교연산자의 차이는?

유형 변환 비교와 엄격한 비교의 [값]과 [자료형]의 다름을 boolean 형식으로 반환한다.

  • 값이 다르지 않음으로 (자료형 비교 X)
    2 != "2" // expected output: false
  • 두 피연산자의 유형이 다른 것이 맞기 떄문에 -> true
    2 !== "2" // expected output: true 
    console.log(typeof 2);	// expected output: "number"
    console.log(typeof "2");  // expected output: "string"

3) 비교 연산자를 이용하여, 'NaN'을 비교하면?

  • Nan ( Not a Number )은, 어떤 것과도 같지 않다는 것을 기억해야 한다.

#권장 사항

  • 변수를 비교하거나 어떤 비교를 위해 항상 '==='연산자를 사용할 것을 권장
  • 가능한 '=='연산자를 사용하지 않도록 하고, 대신 직접 자료형을 변환해(casting) 보다 코드 
    가독성을 높이도록 한다.

참고자료

 

자바스크립트: '==' 와 '===' 는 다르다!

무엇이 다른가? 저는 자바 언어를 먼저 배운 입장에서 자바스크립트에 깊게 노출되지 않았기 때문에 충격을 받았다. 비록 자바스크립트의 어떤 기능, 사건 처리, 그리고 어떤 jQuery 속임수에 상

velog.io

 

'프론트 엔드 > Javascript' 카테고리의 다른 글

[Javascript] Javsacript ES6 주요 특징  (0) 2022.01.20
[JS] JS와 TS의 차이점  (0) 2022.01.20
[프로그래머스 코딩테스트] 문자열 다루기 기본  (0) 2022.01.19
    '프론트 엔드/Javascript' 카테고리의 다른 글
    • 변수 타입 (var, let, const)와 스코프 연산자(scope) 개념
    • [Javascript] Javsacript ES6 주요 특징
    • [JS] JS와 TS의 차이점
    • [프로그래머스 코딩테스트] 문자열 다루기 기본
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바