Programming/Client

[Javascript] ?나 ||를 사용하여 함수 작성

Jiwoo 2022. 3. 2. 16:34

조건부 연산자 '?'

condition ? value1 : value2;

 

condition 만족 시 → value1 반환 / 불만족 → value2 반환

 

  • 다중 사용
    condition ? value2 :
    value 3;
    condition ? value1 :
  • 조건에 따라 반환값을 달리하려는 목적으로 만들어짐
  • 간단한 줄 아니고서는 if 사용이 나음

 

  • 예시
let result;

if (a + b < 4) {
  result = '미만';
} else {
  result = '이상';
}

//

let result = (a + b < 4) ? '미만' : '이상';

// 두 개의 코드는 같은 결과

 

or 연산자 '||'

하나라도 true = true

  • 피연산자가 boolean 아닌 경우 (원래값 반환)
    첫 번째 truthy 반환 / (하나도 없다면) 마지막 피연산자

 

  • 예시
if (isNaN(age) || age<0) {명령문};

// age가 숫자가 아니거나 or 음수 일 때, 실행

 

문제

아래 함수는 매개변수 age가 18보다 큰 경우 true를 반환합니다.

그 이외의 경우는 컨펌 대화상자를 통해 사용자에게 질문한 후, 해당 결과를 반환합니다.

function checkAge(age) {
  if (age > 18) {
    return true;
  } else {
    return confirm('보호자의 동의를 받으셨나요?');
  }
}

if문을 사용하지 않고 동일한 동작을 하는 함수를 한 줄에 작성해보세요.

아래 조건을 충족하는 해답 2개를 작성해야 합니다.

  1. 물음표 연산자 ?를 사용하여 본문을 작성
  2. OR 연산자 ||를 사용하여 본문을 작성

 

나의 풀이

function checkAge(age) {
    age > 18 ? return true : return confirm("보호자의 동의 가능?");
}

1번: 오류
2번: 풀지 못했다 ㅠㅠ

 

해답

 

1. 물음표 연산자 '?'를 사용한 해답:

function checkAge(age) {
  return (age > 18) ? true : confirm('보호자의 동의를 받으셨나요?');
}
  • return을 앞으로 뺄 수 있다
    중복하지 말고 앞으로 빼서 간략하게 작성할 것

 

2. OR 연산자 ||를 사용한 해답

function checkAge(age) {
  return (age > 18) || confirm('보호자의 동의를 받으셨나요?');
}

(age > 18을 감싸고 있는 괄호는 가독성을 높이기 위해 삽입. 괄호가 없어도 동일하게 동작)

 

  • return (age > 18) || confirm('보호자의 동의를 받으셨나요?')
    에서 age > 18 이 false라면 무조건 '보호자의 동의를 받으셨나요?' 가 출력되므로 이렇게 써도 된다.

 


참고

https://ko.javascript.info/function-basics

 

함수

 

ko.javascript.info