본문 바로가기
부트캠프

멋쟁이사자처럼 프론트엔드 부트캠프 14기 - Day 47 (3항 연산자 식, 논리 연산자 식, 함수의 빠른 반환, 템플릿 리터럴)

by 나른한_꼬리_ 2025. 7. 2.
반응형

멋쟁이사자처럼 프론트엔드 부트캠프 14기 - Day 47 (3항 연산자 식, 논리 연산자 식, 함수의 빠른 반환, 템플릿 리터럴)

 

목차

 

3항 연산자 식

3항 연산자 식은 세 부분으로 구성되어있다.

  1. 조건(condition)
  2. 조건이 참인 경우 실행될 명령(?)
  3. 조건이 거짓인 경우 실행될 명령(:)
조건 ? console.log('조건이 참입니다.') : console.log('조건이 거짓입니다.')

// 코드를 개행하여 여러 줄로 구성하는 방법 1
조건 
  ? console.log('조건이 참입니다.')
  : console.log('조건이 거짓입니다.')

// 코드를 개행하여 여러 줄로 구성하는 방법 2
조건 ?
  console.log('조건이 참입니다.') :
  console.log('조건이 거짓입니다.')

 

3항 연산자 식은 필요하다면 중첩하여 사용할 수 있다. 다만, 3중 중첩부터는 코드가 복잡해지기 때문에 조건문을 사용하는 것을 권장한다.

조건1
  ? console.log('조건1이 참입니다.')
  : 조건2
    ? console.log('조건2가 참입니다.')
    : console.log('조건1, 2 모두 거짓입니다.')

 

논리 연산자 식

JavaScript에서는 ||(OR 연산자)&&(AND 연산자)를 사용하여 논리 연산자 식을 만들 수 있다.

 

&& 연산자는 모든 조건이 참일 때만 참이다. 조건 중에 거짓인 값이 있다면, 첫 번째 거짓인 값을 반환하고, 모두 참이면 참인 값을 반환한다.

const result = expression1 && expression2 && expression3

 

|| 연산자는 조건 중 하나라도 참이면 참이다. 조건 중에 참인 값이 있다면, 첫 번째 참인 값을 반환하고, 모두 거짓이면 거짓인 값을 반환한다.

const result = expression1 || expression2 || expression3

 

논리 연산자를 잘 활용하면 조건문이나 조건식처럼 사용할 수 있다.

const user = {
  name: '꼬리',
  email: 'kkori@email.com',
  isSignedIn: false,
}

// ---------------------------------------
// 조건문(if ... else 문)
if (!user.isSignedIn) signIn()
else signOut()

// ---------------------------------------
// 조건식(3항 연산자 표현식)
!user.isSignedIn ? signIn() : signOut()

// ---------------------------------------
// 논리 연산자 식(&&, ||)
// || 연산자는 첫 번째 Truthy 값을 찾는다. (&& 연산자의 반대)
user.isSignedIn || signIn()
// && 연산자는 첫 번째 Falsey 값을 찾는다. (|| 연산자의 반대)
user.isSignedIn && signOut()

function signIn() {
  console.log('로그인합니다.')
}

function signOut() {
  console.log('로그아웃합니다.')
}

 

함수의 빠른 반환

함수는 return 키워드를 사용해 값을 반환한다. 함수 블록에서 return 키워드 이후의 코드가 실행되지 않기 때문에 필요에 따라 값을 일찍 반환할 수 있다. 이것을 빠른 반환(early return)이라고 한다. 빠른 반환은 다음 두 가지 상황에서 사용해야 한다.

  1. 중첩된 코드를 줄이기: 이벤트 위임에서 일부 코드를 중첩해 실행해야 할 때 사용
  2. else if 조건문 제거: else를 제거하고, 표현식이 한 줄이면 중괄호를 생략할 수 있다.
// 중첩된 코드 줄이기: 이벤트 위임
container.addEventListener('click', (e) => {
  const el = e.target.closest('.element')
  if (!el) return
  el.classList.toggle('.toggle')
})

// else if 문
function getGift(score) {
  if (score === 100) return '노트북'
  if (score > 75) return '태블릿'
  if (score > 50) return '스마트폰'
  return null
}

 

템플릿 리터럴

템플릿 리터럴(Template Literal)은 백틱(`, 역따옴표)으로 시작하고 끝나는 문자열이다.

const templateLiteral = `템플릿 리터럴 구문은 역따옴표(\`)를 사용합니다.`

 

템플릿 리터럴을 사용하면 문자를 접합하고, 여러 줄로 구성된 문자열을 만들기 쉬워진다.

function greetTemplate(data) {
  return `
    <div class="greet">
      <strong>안녕! ${data.name}</strong>
      <p>맛있는 ${data.mealTime} 먹자.</p>
    </div>
  `
}

const greet = greetTemplate({ name: '성호', mealTime: '점심' })
console.log(greet)
// <div class="greet">
//   <strong>안녕! 성호</strong>
//   <p>맛있는 점심 먹자.</p>
// </div>

템플릿 리터럴의 고급 형태로 태그드 템플릿(Tagged Template)이 있다.

태그(tag)는 템플릿 리터럴을 함수로 해석할 수 있게 해준다. 태그 함수의 첫 번째 인수문자열 값들의 배열이고, 나머지 인수들표현식과 관련이 있다. 태그 함수는 이 인수들로 원하는 연산을 수행한 후, 조작된 문자열을 반환한다. 태그 함수의 이름은 무엇이든 상관 없다.

const person = '최재훈'
const job = '프론트엔드 개발자'

// 함수 이름 뒤에 () 대신 역따옴표를 붙여도 함수를 실행한다.
const result = myTag`${person}은 ${job}입니다.`
console.log(result) // '최재훈은 프론트엔드 개발자입니다.'


function myTag(strings, person, job) {
  console.log(strings) // ['', '은 ', '입니다.']
  console.log(person)  // '최재훈'
  console.log(job)     // '프론트엔드 개발자'
  
  // 탬플릿 리터럴을 사용해 문자열 값 반환
  return `${job}, ${person}${strings.at(-1)}`
}

 

 

오늘 하루를 돌아보며

오늘부터 실습 시간을 줄이고 진도를 나가기로 했다. 진도가 느리다는 이유다. 세상에나! 지금도 살짝 빠른가 싶었는데 여기서 더 빨라진다니 따라갈 수 있을까 걱정했다. 그런데 오늘 배운 내용은 다행히 개념을 이해해야 하는 정도로 어렵지 않고, JavaScript의 유용한 기능이어서 '아, 이런 기능이 있었구나!', '이렇게 하면 더 쉽겠구나!'하고 넘어가면 되는 거였다. 내용도 따라가기 어렵지 않아서 다행이다. 다만, 익숙해질 시간이 필요할 것 같다. 오늘은 실습을 하나도 못 해서 블로그만 업로드하고 남은 시간에 실습 문제들을 하나씩 풀어봐야겠다.

 

반응형