조건문
- Boolean 타입과 조건문과의 관계
- 비교 연산자
- 논리 연산자
Boolean 타입은 True
(참)과 False
(거짓)을 판별할 때 사용하는 데이터 타입이다.
console.log(1 + 1 === 2) // True
console.log(1 + 1 === 3) // False
Js는 대소문자를 판별하기 때문에 주의해야 한다.
console.log('Sue Coding' === 'Sue Coding') // True
console.log('Sue Coding' === 'SUE CODING') // False
조건문의 구조
참과 거짓이라는 각각의 조건에 따라 실행되는 코드가 다르기 때문에 조건문은 Boolean 타입과 항상 같이 한다.
< if ~ else >
let name = 'Gildong Hong'
if (name === 'Sue Lee') {
console.log('저는 Sue Lee 입니다.')
} else {
console.log('저는 Sue Lee가 아닙니다.')
}
// name이 Sue Lee -> 저는 Sue Lee 입니다.
// name이 Gildong Hong -> 저는 Sue Lee가 아닙니다.
< if ~ else if ~ else >
let name = 'Coder Lee'
if (name === 'Coder Lee') {
console.log('저는 Coder Lee 입니다.')
} else if (name === 'Sue Lee') {
console.log('저는 Coder Lee가 아닙니다. 저는 Sue Lee 입니다.')
} else {
console.log('저는 Coder Lee도 아니고, Sue Lee도 아닙니다.')
}
// name -> 'Coder Lee' , return 저는 Coder Lee 입니다.
// name -> 'Sue Lee' , return 저는 Coder Lee가 아닙니다. 저는 Sue Lee 입니다.
// name -> 'Gyeong Su' , return 저는 Coder Lee도 아니고, Sue Lee도 아닙니다.
< if ~ else if ~ else (with return) >
1)
function isOkayToDrive(who) {
// 함수의 인자가 SON -> NOPE
// 함수의 인자가 DAD -> GOOD
// 함수의 인자가 GRAND FATEHR -> BE CARFUL
// who are you
if (who === "son") {
return "Nope!"
} else if (who === "dad") {
return "Good!"
} else if (who === "grand father") {
return "Be careful!"
} else {
return "Who are you?"
}
}
2)
function findGreaterNum(num1, num2) {
if (num1 > num2) {
return "First one is greater!"
} else if (num1 < num2) {
return "Second one is greater!"
} else {
return "Same!"
}
}
3)
function checkAge(name, age) {
if (age < 21) {
return "Go home, " + name + "!"
} else {
return "Nice to meet you, " + name + "!"
}
}
=> 이 예시를 푸는 데 시간이 걸렸다. return문에 있는 문자열과 변수인 name을 따옴표("", '')로 따로 분리하여 코드를 쳐야 했다. 하지만 나는 한 번에 따옴표를 붙여서 덩어리로 쳤고 그로인해 Js가 변수 인식을 하지 못해 결과가 나오지 않았었다.
조건문에서 True
(참)과 False
(거짓) 판별 시 사용되는 연산자를 비교 연산자 라고 한다.
연산자 | 사용법 | 예시 |
---|---|---|
== | 피연산자가 같으면 true를 반환한다. | 3 == var "3" == var1 3 == '3' |
!= | 피연산자가 다르면 true를 반환한다. | var1 != 4 var2 != "3" |
=== | 피연산자가 같고 데이터 타입이 같으면 true를 반환한다. | 3 === var1 |
!== | 피연산자들이 다르거나 데이터 타입이 다른 경우 true를 반환한다. | 1 + 1 !== 3 // true 1 + 1 !== 2 // false |
> | 좌변의 피연산자가 우변의 피연산자보다 크면 true를 반환한다. | var2 > var1 "12" > 2 |
>= | 좌변의 피연산자가 우변의 피연산자보다 크거나 같으면 true를 반환한다. | var2 >= var1 var1 >= 3 |
< | 좌변의 피연산자가 우변의 피연산자보다 작으면 true를 반환한다. | var1 < var2 "2" < 12 |
<= | 좌변의 피연산자가 우변의 피연산자보다 작거나 같으면 true를 반환한다. | var1 <= var2 var2 <= 5 |
조건은 소괄호에, 조건이 충족 되었을 시 실행할 코드가 중괄호에 들어간다.
1)
if (1 + 1 === 2 ) {
console.log("1 더하기 1은 2입니다.")
} // true -> 1 더하기 1은 2입니다.
2)
function isOddAndGreaterThanTwenty(num) {
if (num % 2 !== 0 && num > 20) { // num이 홀수이고 20보다 큰 경우에만 true를 반환
return true
} else {
return false
}
}
논리 연산자 | 설명 |
---|---|
and | 논리식이 모두 참이면 참을 반환함. (AND 연산) |
or | 논리식 중에서 하나라도 참이면 참을 반환함. (OR 연산) |
xor | 논리식이 서로 다르면 참을 반환함. (XOR 연산) |
&& | 논리식이 모두 참이면 참을 반환함. (AND 연산) |
\\ | 논리식 중에서 하나라도 참이면 참을 반환함. (OR 연산) |
! | 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (NOT 연산) |
function or(expression1, expression2) {
if (!(expression1 === false && expression2 === false)) {
return true
} else {
return false
}
}
function or(expression1, expression2) {
if (!(expression1 === false && expression2 === false)) {
return true
} else {
return false
}
} // ! 와 && 연산자를 사용. 두 인자가 모두 false인 경우에는 false를 반환.
// 그 이외의 경우에는 모두 true를 반환.
function isEitherEvenAndLessThan9(num1, num2) {
if ((num1 % 2 === 0 || num2 % 2 === 0) && (num1 < 9 && num2 < 9)) {
return true
} else {
return false
}
} // 숫자 중 적어도 하나가 짝수인지 확인 그리고 두 숫자 모두 9보다 작은지를 확인
Truthy (참 같은 값)이란 Boolean 데이터 타입의 True는 아니지만 True 처럼 관리되는 값이다.
Falsy (거짓 같은 값)은 Truthy가 아닌 모든 값들이다. (예: false, 0, -0, 0n, "", null, undefined와 NaN 등)
let a = 0 // falsy
let b = 100 // truthy
if (a) {
console.log('I am Falsy')
} else if (b) {
console.log('I am Truthy')
} // return I am Truthy , 숫자 100이 true 데이터 타입인 것은 아니지만 if문에서 true처럼 실행된다.
<출처>
비교 연산자
논리 연산자
Truthy & Falsy