[JS]true==2는 false지만, if(2) {}는 실행되는 이유

2024. 11. 9. 22:01·Language/JavaScript

자바스크립트에서 조건문과 비교 연산자를 사용하다 보면 의외의 결과를 마주할 때가 많다. 특히 true == 2는 false로 평가되지만, if(2)는 true로 평가되어 실행되는 현상이 있다. 이번 글에서는 그 이유와 함께 자바스크립트에서 truthy와 falsy 값이 어떻게 작동하는지 살펴보겠다.

true == 2가 false인 이유

자바스크립트에서는 == 연산자가 느슨한 동등 연산자로 작동한다. 이 연산자는 비교하기 전에 피연산자들의 형을 자동으로 맞추기 때문에, true는 숫자 1로 변환된다. 따라서 true == 2는 실제로 1 == 2로 평가되어 false가 된다.

console.log(true == 2); //false

이와 같은 동작이 일어나는 이유는 자바스크립트의 형 변환 덕분이다. 자바스크립트는 비교할 때 true를 숫자 1로, false를 0으로 자동 변환해 평가한다.

if(2) {}가 실행되는 이유

if 문에서는 조건식이 truthy 값인지 falsy 값인지에 따라 true 또는 false로 평가된다. 자바스크립트에서 0, " ", null, undefined, NaN, false는 falsy 값으로 간주되며, 그 외의 값들은 truthy 값으로 평가된다. 숫자 2는 truthy 값이므로 if(2)는 true로 평가되어 조건문이 실행된다.

if (2) {
  alert("실행"); //숫자 2는 truthy 값이므로 이 코드는 실행된다.
}

true와 truthy의 차이

true와 truthy는 서로 다른 개념이다. true는 boolean 값으로, 항상 true로 평가된다. 반면 truthy는 조건문에서 참(true)으로 평가되는 값을 말한다. 즉, true는 boolean 값이며, truthy는 조건문에서 참으로 평가되는 모든 값들이다. 예를 들어, 2, "hello", -1 등은 모두 truthy 값에 해당하지만, true 자체는 단순히 boolean 타입 값으로서 특정 동등 비교 결과에 영향을 미친다.

자바스크립트의 truthy와 falsy 

자바스크립트에서 조건문을 사용할 때, 값이 falsy인지 truthy인지 이해하면 조건식의 평가 결과를 예측하기가 쉬워진다. 다음은 자바스크립트의 falsy 값이다.
0, " ", null, undefined, NaN, false

이 외의 값들은 모두 truthy로 간주된다. 예를 들어, 2, -1, "hello"와 같은 값들은 모두 truthy로 평가된다.

결론

자바스크립트의 조건문과 비교 연산자는 다르게 작동할 수 있다. == 연산자는 형 변환을 수행한 후 비교하지만, if 문에서는 값이 truthy인지 falsy인지에 따라 조건을 평가한다. 이러한 특성을 이해하면 자바스크립트의 논리 구조를 더욱 잘 이해할 수 있다.

'Language > JavaScript' 카테고리의 다른 글

[JS]객체(Object) 정의, 호출  (0) 2024.12.24
[JS]배열 관련 함수  (2) 2024.11.25
[JS]함수의 다양한 정의 방법  (0) 2024.11.25
[JS]prompt, console.log, alert, document.write  (1) 2024.11.10
[JS]== vs ===  (2) 2024.11.09
'Language/JavaScript' 카테고리의 다른 글
  • [JS]배열 관련 함수
  • [JS]함수의 다양한 정의 방법
  • [JS]prompt, console.log, alert, document.write
  • [JS]== vs ===
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트
        • 백준
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JS]true==2는 false지만, if(2) {}는 실행되는 이유
상단으로

티스토리툴바