TIL 03 | JavaScript | 비교연산자, 논리연산자

Boolean

  • 참과 거짓을 나타내는 데이터타입

비교연산자

  • 일치 : ===
  • 불일치 : !==
  • 참 : true
  • 거짓 : false

=== 와 ==의 차이

=== : 일치 비교 연산자 (boolean)
== : 동등 비교 연산자 ( 1==1, 1≠2)

=== 가 더 염격한 비교 연산자라, ===를 쓰는 것을 권장한다고 한다.

IF

  • 조건문이 참인지 거짓인지에 따라 수행되는 코드가 다름.
  • 참인지 거짓인지 판별하기 위해서는 조건문의 비교가 필요함.
  • if - else if - else 순
if (a === 'miyeon') { // 경우 1
	console.log('저는 미연입니다')
} else if (a === 'miyoni') { // 경우 2
	console.log('저는 미연이 아닙니다.')
} else if (a === 'miyo') { // 경우 3
	console.log('어쨌든 미연이 아닙니다.')
} else { // 위의 세 가지 경우가 모두 해당되지 않을 때
	console.log('아무튼 저는 미연이 아닙니다.')
}

파라미터값이 짝수인지 홀수인지 비교하여 판별하는 함수

function oddOrEven(num) {
  let num2 = num % 2;

  if (num2 == 1)
    console.log("Odd");
  else (num2 == 0)
    console.log("Even");
}

oddOrEven(5);  // Odd
oddOrEven(12); // Even
  1. 5, 12를 INPUT 값으로 전달하여 oddOrEven 함수 호출
  2. 5, 12를 각각 순서대로 num에 전달하여 대입한 뒤, 2로 나눈다
  3. 5와 2를 나눈 나머지는 1이므로, if (num2 == 1)의 조건문이 성립된다. 따라서 oddOrEven(5)의 결과는 Odd가 출력된다.
  4. 12와 2를 나눈 나머지는 0이므로, if (num2 == 1)의 조건문이 성립되지 않고 else if (num == 0)의 조건문이 성립된다. 따라서 oddOrEven(12)의 결과는 Even이 출력된다.

내가 했던 실수 :: 두 가지 조건을 작성하는 경우 = 비교연산자 사용 (&&, ||)

  • If 문 안에 비교 조건식을 세울 경우, 비교연산자를 사용하여 조건식을 하나씩 세워야 하는데, 나는 조건문을 중첩해서 사용해 버렸다.
function whichGrade(score) {
 if (0 <= score <= 59) {
   return 'F'
 } else if (60 <= score <= 69) {
   return 'D'
 } else if (70 <= score <= 79) {
   return 'C'
 } else if (80 <= score <= 89) {
   return 'B'
 } else if (90 <= score <= 100) {
   return 'A'
 } else if (score > 100 || score < 0) {
   return 'INVALID SCORE'
 }
}

let x = whichGrade(66)
console.log(x)

// F
// INPUT 값에 어떤 숫자를 대입해도 F가 뜨는 오류 발생

- 두 가지 조건을 사용하는 경우, 아래 코드처럼 비교연산자(&&, ||)를 사용해야 한다.

function whichGrade(score) {
 if (score >= 90 && score <= 100) {
   return 'A'
 } else if (score >= 80 && score <= 89) {
   return 'B'
 } else if (score >= 70 && score <= 79) {
   return 'C'
 } else if (score >= 60 && score <= 69) {
   return 'D'
 } else if (score >= 0 && score <= 59) {
   return 'F'
 } else if (score < 0 || score > 100) {
   return 'INVALID SCORE'
 }
}

let x = whichGrade(77)
console.log(x)


// C

switch ~ case 와의 차이점

  • switch 조건문의 case 에는 상수값(숫자)과 문자열만 사용 가능, 조건식 사용 불가. (가독성 Good)
  • 때문에, 조건식을 사용하려면 if ~ else if 문을 사용해야 한다.

논리연산자

OR : 두 조건식 중 하나만 참이어도 참이 됨.

1 + 1 === 2 || 1 + 1 === 3
|| 거짓 = 참(TRUE)

AND : 두 조건식이 모두 참이어야 참이 됨.

1 + 1 === 2 && 1 + 1 === 3
&& 거짓 = 거짓 (FALSE)

Truthy와 Falsy

Truthy가 아니면 Falsy이고, Falsy가 아니면 Truthy이다!

  • Truthy : 참은 아니지만 참 같은 값. Boolean 데이터 타입의 진짜 True는 아니지만, True처럼 관리되는 값.
  • Falsy : 거짓은 아니지만 거짓 같은 값. Boolean 데이터 타입의 진짜 False는 아니지만, False처럼 관리되는 값.
  • 개인적으로 학부 때 if문을 공부하면서 제일 헷갈렸던 개념이다. if 조건문 안에 "false"라는 영단어가 들어가 있지가 않고, 숫자 0만 넣어도 false라고 인식을 한다니!? 물론 지금은 주입식교육으로 인해 if(0)이 무조건 false라는 것을 알고 있지만, 이 개념이 Truthy와 Falsy로 정의되어 있는지는 처음 알았다. 이번 기회에 확실히 알고 넘어가서 너무 좋다. 지식의 확장은 늘 흥분되는 일인 것 같다..!! 이런 건 코드로 봐야 직빵으로 이해되지. 당장 확인해 보자.
let a = 0 
let b = 100

if (a) { // a에 0이 대입되어 false값으로 변하기 때문에, 이 조건문은 실행되지 않음
  console.log("Falsy")
} else if (b){ // b에 100이 대입되어 실제 true값=1은 아니지만, 참값으로 여겨져 이 조건문이 실행됨
  console.log("Truthly")
}

// Truthly

좋은 웹페이지 즐겨찾기