Truthy한 값은 true로 평가, Falsy한 값은 false로 평가되는 연산 방식을 말한다.
자료형 중에 항상 Truthy로 판단되는 자료형이 존재한다. ★★★
바로 Array(배열)과 Object(객체)다.
JS에서는 배열과 객체는 항상 Truthy 값을 가진다. 빈 배열이나 빈 객체도 포함해 배열과 객체는 조건문에서 true로 평가된다. 이 특징은 JS의 중요한 부분, 배열이나 객체가 존재하는지 여부를 쉽게 확인할 수 있게 해준다.
배열과 객체가 Truthy인 이유: 배열과 객체가 기본적으로 메모리에 할당된 주소를 가지기 때문에, 빈 배열이나 빈 객체도 undefined나 null이 아닌 유효한 값으로 간주된다. 그러므로 조건문에서 항상 true로 평가된다.
그래서 배열이나 객체의 존재 여부 확인할 때 truthy/falsy 체크를 사용할 수 있지만, 배열이 비어있는지, 객체에 키가 있는지 확인하려면 추가적인 방법을 사용해야 한다.
다른 자료형을 가진 값에 강제로 불리언 연산을 적용하려면 Boolean 함수를 사용할 수 있다.
Boolean('String')=true
Boolean(' ')=false
Boolean(undefined)=false
Truthy와 Falsy
JS에서 Boolean 값으로 평가될 수 있는 모든 값은 Truthy 또는 Falsy로 구분된다.
- Truthy: Boolean 값으로 true로 평가되는 값
-> Boolean(1), Boolean("hello"), Boolean([]), Boolean(function(){})- Falsy: Boolean 값으로 false로 평가되는 값
-> false, 0, '0', " "(빈 문자열), null
조건문은 조건이 충족할 때만 특정 구문이 실행하도록 할 경우에 사용한다.
프로그래밍에서 논리적인 로직을 표현할 때 가장 중심이 되는 구문으로, 조건문을 프로그래밍의 꽃이라고 해도 과언이 아니다.
조건에 들어가는 값은 항상 Boolean 연산 적용됨
if... else문if (condition) else
if... else + Block
if (condition){ }
else { }
조건에 대해 여러 명령문 묶어 실행하기 위해서는 반드시block으로 묶어야 한다.block은 항상 사용해도 문제가 없다. 그리고 가독성 위해 항상 사용하는 것을 일반적인 규칙으로 두는 회사도 있다.
if... else문 chaining
if (condition1) { }
else if (condition2) { }
else (condition3) { }
※ 이 외에 삼항 연산자, switch문 등의 조건문 있지만 표현 상 차이일 뿐 모두 if 문으로 처리가 가능하다.
주로 조건을 결합하거나 논리적인 결정을 내리는 데 사용된다.
주요 논리 연산자는 &&, ||, !가 있다.
&&- AND 연산자: 두 조건이 모두 참일 때 'true'를 반환하고 두 개 조건 중 하나라도 거짓이면 'false'를 반환한다.
||- OR 연산자: 두 조건 중 하나라도 참이면 'true를 반환하고 두 개 조건 모두 거짓일 경우 'false'를 반환한다.
!- NOT 연산자: 피연산자의 Boolean 값을 반전시킨다. 'true'는 'false'로, 'false'는 'true'로 변환된다.
모든 반복문은 기본적으로 특정 구문을 반복할 때 사용한다.
기본적인 반복문은 for 문으로
모든 for문은 조건문 위치에 있는 값이 Truthy한 경우 계속 반복된다.
조건이 처음부터 만족하지 않는다면 반복문은 실행되지 않는다.
기본적인 for 문의 구조 - for (초기화구문; 조건문; 증감문)
- 초기화 구문: for문 안에서만 사용될 변수 선언
- 조건문: 조건문에 있는 값이 Falsy한 경우 명령문 반복 중단
- 증감문: 구문 끝나는 경우 증감문에 선언된 구문 실행됨
반복문은 if문 처럼 Block을 사용 가능하다.
반복문을 제어하는 다른 방법- 일반적으로 반복문이 중단되려면 조건문의 값이 falsy값이 나와야 한다. 이 방법을 제외하고 반복문을 벗어나거나 무시하기 위한 다른 방법이 존재한다. 바로 break문과 continue문이다.
break문- 조건 상관 없이 반복문 중단하기 위한 키워드
continue문- 조건 상관 없이 해당 명령문 중단, 바로 다음 단계인 증감문부터 실행
변수를 선언할 때 값을 할당하지 않으면 어떤 값이 출력되는가?
선언되지 않은 변수를 참조하면 어떻게 되는가?
배열이 기본으로 제공해주는 함수들이 있다. 이 중 원하는 데이터를 필터링 해주는 함수는?