갈푸라떼
갈푸라떼는 개발중
갈푸라떼
전체 방문자
오늘
어제
  • 분류 전체보기 (232)
    • CS (0)
      • CSinfo (0)
    • Frontend (15)
      • HTML,CSS (1)
      • Javascript (2)
      • React (0)
      • React Hook (12)
    • Backend (0)
      • Python (0)
      • Node.js (0)
      • php (0)
    • DB (2)
      • MySQL (2)
      • BigQuery (0)
      • Mongodb (0)
    • Study (186)
      • JavaScript (72)
      • JavaScript(Clean code) (50)
      • Node.js (11)
      • HTML,CSS (13)
      • React (30)
      • TypeScript (10)
      • React-Native (0)
    • Error (2)
      • error (2)
    • Git (22)
      • Git (22)
    • Help Coding (4)
      • Useful websites (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • Github

공지사항

인기 글

태그

  • Babel
  • 컴파일러
  • 함수
  • ECMAScript
  • 싱글스레드
  • 스코프 체인
  • 인터프리터
  • function
  • 이터러블
  • 객체타입
  • 프로토타입
  • 자바스크립트엔진
  • 원시타입
  • 호이스팅
  • 네이밍
  • this
  • 렉시컬 환경
  • SPREAD
  • nodemon
  • 실행 컨텍스트
  • symbol
  • 정적 레벨
  • 상속
  • 오버라이딩
  • PM2
  • 심볼
  • class
  • Arrow
  • structure
  • prototype

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갈푸라떼

갈푸라떼는 개발중

Study/JavaScript(Clean code)

[JavaScript][clean-code] Truthy & Falsy

2022. 5. 29. 16:41

* Truthy & Falsy

- 자바스크립트는 동적인 타이핑을 가진 언어 이다보니 형변환이 자유롭다.
- 사용자가 의도하지 않아도 형변환이 일어나게 된다.

 

* 예시코드

if ('string'.length > 0) {
}

if (!isNaN(10)) {
}

if (boolean === true) {
}

* 아래와 같이 변경해도 충분히 동작한다.

 - 이유는??

전부 Truthy값이기 때문이다. (참으로 평가되기 때문에 정상적으로 동작하는것이다.)

if ('string'.length) {
}

if (10) {
}

if (boolean) {
}

* 참 같은 값 (Truthy)

if (true) {
  console.log('true!');
}
if ({}) {
  console.log('true!');
}
if ([]) {
  console.log('true!');
}
if (42) {
  console.log('true!');
}
if ("0") {
  console.log('true!');
}
if ("false") {
  console.log('true!');
}
if (new Date()) {
  console.log('true!');
}
if (-42) {
  console.log('true!');
}
if (12n) {
  console.log('true!');
}
if (3.14) {
  console.log('true!');
}
if (-3.14) {
  console.log('true!');
}
if (Infinity) {
  console.log('true!');
}
if (-Infinity) {
  console.log('true!');
}

 

* 거짓 같은 값(Falsy)

- console값이 출력되지않는다.

if (false) {
  console.log('false')
}
if (null) {
  console.log('false')
}
if (undefined) {
  console.log('false')
}
if (0) {
  console.log('false')
}
if (-0) {
  console.log('false')
}
if (0n) {
  console.log('false')
}
if (NaN) {
  console.log('false')
}
if ("") {
  console.log('false')
}


* Truthy & Falsy활용

* 활용하기 전 (Before)

function printName(name) {
  if (name === undefined || name === null) {
    return '사람이 없네요.';
}
  return `안녕하세요 ${name}님`;
}

console.log(printName());


* 활용한 코드 (After)

function printName(name) {
  if (!name) {
    return '사람이 없네요.';
}
  return `안녕하세요 ${name}님`;
}

console.log(printName());
  • 위의 코드처럼 단축 가능
  • name에 문자열이 들어가면 Truthy로 기결이 된다.
  • 문자열이 들어오지 않았을때 Falsy로 기결이 된다.
  • Falsy에 undefined와 null이 포함되어 있다. 따라서 아래의 코드는 단축되어도 정상적으로 작동이 된다.
  • 정말 철저한 검사가 아니면 Truthy와 Falsy를 활용하면 좋다. (코드의 단축)

'Study > JavaScript(Clean code)' 카테고리의 다른 글

[JavaScript][clean-code] else if & else피하기  (0) 2022.05.29
[JavaScript][clean-code] 단축평가(short-circuit evaluation)  (0) 2022.05.29
[JavaScript][clean-code] 삼항연산자  (0) 2022.05.29
[JavaScript][clean-code] 매개변수의 순서가 경계이다.  (0) 2022.05.28
[JavaScript][clean-code] prefix-suffix  (0) 2022.05.28
    'Study/JavaScript(Clean code)' 카테고리의 다른 글
    • [JavaScript][clean-code] else if & else피하기
    • [JavaScript][clean-code] 단축평가(short-circuit evaluation)
    • [JavaScript][clean-code] 삼항연산자
    • [JavaScript][clean-code] 매개변수의 순서가 경계이다.
    갈푸라떼
    갈푸라떼

    티스토리툴바