🤟
Vanilla-JS
  • TRIPLE-PLUS Adout
  • Babel.JS
  • 01.Vanilla-JS
    • 01. Hello JavaScript
    • 02. 변수
      • 02-1.지키면 좋은 룰(더 좋은 스타일을 위해서)
      • 02-2.숫자형꿀팁(수식 줄이기)
    • 03. 연산자
    • 04. 조건문
    • 05. 함수
      • this의 의미 6개 총정리
      • event listener와 constructor
      • 05-1. return:돌려주다
      • 05-2. 형 변환 함수
      • 05-3. Arrow function
    • 06. 객체
    • 07. 배열
      • 07-1. 배열 안에 배열(2차 배열)
      • 07-2. 배열내장 함수(forEach)
      • 07-3. 배열내장 함수(sort)
      • 07-4. 배열내장 함수(map)
      • 07-5. 배열내장 함수(indexOf)
      • 07-6. 배열내장 함수(filter)
      • 07-7. 배열내장 함수(splice, slice)
      • 07-8. 배열내장 함수(shift, unshift, pop, push)
      • 07-9. 배열내장 함수(concat, join)
      • 07-10. 배열내장 함수(reduce)
      • 07-10. 배열내장 함수(reduce)2
    • 08. 반복문
    • 09. Class와 프로토타입
      • 09-1. 프로토타입과 클래스 - 생성자
      • 09-2. 프로토타입과 클래스 - 생성자 상속하기
      • Class & Constructor & Method
      • super
      • Static Method
      • Class Getter, Setter
      • Information Hiding
      • Inheritance & Polymorphism
      • Overriding
      • Abstract Class
      • Interface
    • Math 정리
    • String 정리
    • Array정리
    • Date 정리
      • D-day 구하기
  • 02.Vanilla-JS
    • 01.삼항연산자
    • 02. Truthy and Falsy
    • 03. 단축 평가 논리 계산법
    • 04. 함수 업그레이드 (default parameter/arguments)
    • 05. 조건문 더 스마트하게 쓰기
    • 06. 비구조화 할당 (구조분해) 문법
    • 07. spread 와 rest
      • 함수 파라미터에서의 rest(params)
      • 함수 인자에서의 spread
    • 08. 자바스크립트의 Scope 에 대한 이해
    • 09. Hoisting 이해하기
    • 10. Native DOM 선택
  • 03.비동기 처리
    • 01. fetch, then, catch[Promise] 이해하기
    • 02. 직접 만들어보는 Promise 객체
    • 03. async/await
    • 04. Promise all, Promise.race
  • REST API 제대로 알고 사용하기
    • mongodb Atlas
    • mongodb Atlas(DB)에 접근하려면
    • URL 이름짓기 관습
    • Database에 자료 저장하는 법
    • 게시물마다 번호를 달아 저장하기
    • 게시물마다 번호를 달아 저장하기2
  • JQUERY + SCRIPT 유용한 코드 정리
  • Practice(실습)
    • 카운터 만들기
    • reduce
    • 데이터 자료형 활용하기1
    • 데이터 자료형 활용하기2
    • 데이터 가지고 놀기(응용)1
    • 데이터 가지고 놀기(응용)2
    • REST API
    • 배열 만들기1
    • 배열 만들기2
    • 배열 만들기3
    • 비구조화 할당
    • rest + spread(응용)1
    • rest + spread(응용)2
    • rest + spread(응용)3
    • 반복문 내장함수(응용)1
    • 함수 가지고 놀기(응용)1
    • 서버와의 통신1
    • 서버와의 통신2
    • new Promise(응용)2
    • new Promise(응용)3
    • 자바스크립트 이벤트 위임 핵심 정리
Powered by GitBook
On this page
  • 단축 평가 (short-circuit evaluation) 논리 계산법
  • && 연산자로 코드 단축시키기
  • || 연산자로 코드 단축시키기
  • EX1)

Was this helpful?

  1. 02.Vanilla-JS

03. 단축 평가 논리 계산법

단축 평가 (short-circuit evaluation) 논리 계산법

이번에는 논리 연산자를 조금 더 유용하게 사용하는 방법에 대해서 배워보겠습니다.

우리가 이전에 연산자를 배울때, 다음과 사항을 잘 숙지하셨을겁니다.

true && true  // true
true && false // false
true || false // true
false || true // true

논리 연산자를 사용 할 때에는 무조건 우리가 true 혹은 false 값을 사용해야 되는 것은 아닙니다. 문자열이나 숫자, 객체를 사용 할 수도 있고, 해당 값이 Truthy 하냐 Falsy 하냐에 따라 결과가 달라집니다.

const dog = {
    name: '멍멍이'
};

var getName = function(animal) {
    if(animal){
        return animal.name;
    }
    return undefined;
}

const name = getName();
console.log(name);

getName() //파라미터로 값이 없을때 결과) undefined

getName(dog) //파라미터로 값이 있을때 결과) 멍멍이

&& 연산자로 코드 단축시키기

A && B 연산자를 사용하게 될 때에는 A 가 Truthy 한 값이라면, B 가 결과값이 됩니다. 반면, A 가 Falsy 한 값이라면 결과는 A 가 됩니다.

이렇게 코드를 작성해보세요.

var getName = function(animal) {
    return animal && animal.name //위에 코드를 한줄로 작성한것이다.
}

const name = getName();
console.log(name); // undefined

이게 작동하는 이유는?

console.log(true && 'hello');    // hello
console.log(false && 'hello');   // false
console.log('hello' && 'bye');   // bye
console.log(null && 'hello');    // null
console.log(undefined && 'hello'); //undefined
console.log('' && 'hello');       // ''
console.log(0 && 'hello');        // 0
console.log(1 && 'hello');        // hello
console.log(1 && 1);              // 1

이러한 속성을 잘 알아두면, 특정 값이 유효할때에만 어떤 값을 조회하는 작업을 해야 할 때 매우 유용합니다.

|| 연산자로 코드 단축시키기

A || B 는 만약 A 가 Falsy한 값이면, B 가 결과값이 됩니다. 반면, A 가 Truthy 한 값이라면 B 가 됩니다.

|| 연산자는 만약 어떤 값이 Falsy 하다면 대체로 사용 할 값을 지정해줄 때 매우 유용하게 사용 할 수 있습니다.

예를 들어서 다음과 같은 코드가 있다고 가정해봅시다.

const namelessDog = {
  name: ''
};

function getName(animal) {
  const name = animal && animal.name;
  if (!name) {
    return '이름이 없는 동물입니다';
  }
  return name;
}

const name = getName(namelessDog);
console.log(name);  // 이름이 없는 동물입니다.

위 코드는 || 연산자를 사용하면 다음과 같이 단축시킬 수 있습니다.

const namelessDog = {
  name: ''
};

function getName(animal) {
  const name = animal && animal.name;
  return name || '이름이 없는 동물입니다.';
}

const name = getName(namelessDog);
console.log(name); // 이름이 없는 동물입니다.
console.log(false || 'hello');                   // hello
console.log('' || '이름없');                     // 이름없다.
console.log(null || '널이다~');                    // 널이다~
console.log(undefined || 'defined 되지 않았다!');   // defined 되지 않았다!
console.log(0 || '제로');                        // 제로다

console.log(1 || '음?');                           // 1
console.log(true || '여기 안본다.');                 // true
console.log('와아' || '여기 안봐요');                 // 와아
console.log([] || '노노');                         // []

EX1)

const dog = {
    name: '멍멍이'
};

const getName = function(animal) {
    return animal && animal.name;
};

const name = getName();     // undefined
const name = getName(dog);  // 멍멍이
console.log(name)
Previous02. Truthy and FalsyNext04. 함수 업그레이드 (default parameter/arguments)

Last updated 4 years ago

Was this helpful?