TIL 007 | 조건문의 기초
1. 조건문이란
자바스크립트에서 조건문은 특정한 조건을 만족했을 때 코드를 실행시키는 기능을 가지고 있다. if 문은 지정한 조건(condition)이 참일 경우 명령문(statement)을 실행시킨다.
if (condition) {
statement
}
if 뒤에 조건문 괄호( )가 오고, 이어서 실행할 코드를 중괄호{ } 안에 표현한다. 괄호 ( ) 안의 조건이 참이면 중괄호{ } 안에 있는 명령문을 실행하고, 거짓이면 실행하지 않는다. 명령문이 하나라면 중괄호{ }없이 바로 명령문만 쓰기도 한다.
else if를 사용하면 조건문 여러 개를 연결할 수도 있다.
if (condition1) {
statement1
} else if (condition2) {
statement2
} else {
statement3
}
만약 조건1을 만족하면 명령문1이 실행되고, 조건2를 만족하면 명령문 2가 실행되고, 앞의 2가지 조건 모두 만족하지 못하면(따라서 마지막은 else만 쓰면 된다) 마지막 명령문3이 실행되는 구조이다.
2. 비교연산자(Comparison Operator)
여기서 등호를 포함한 연산자 ===와 ==는 조금 다르다. 3개 짜리는 자료형까지 정확히 일치해야만 하고(엄격 비교), 2개짜리는 자료형이 다르더라도 그 값을 같은 값으로 볼 수 있으면 같다고 처리한다(추상비교). !== 와 != 도 같은 원리이다.
5 == 5 // true
5 == "5" // true
5 === 5 // true
5 === "5" // false
7 != 7 // false
7 != "7" // false
7 !== 7 // false
7 !== "7" // true
3. 논리연산자(Logical Operator)
(이미지출처:
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators#logical_operators)
여기서 &&는 우리가 흔히 알고 있는 and의 개념이고 ||는 or의 개념이라고 생각하면 된다. 그리고 !는 not의 개념으로 true에 붙이면 false가 되고 false에 붙이면 true가 된다.
1 + 1 === 2 && 2 + 2 === 4 //true
1 + 1 === 2 && 2 + 2 === 5 //false
1 + 1 === 3 && 2 + 2 === 4 //false
1 + 1 === 2 || 2 + 2 === 4 //true
1 + 1 === 2 || 2 + 2 === 5 //true
1 + 1 === 3 || 2 + 2 === 4 //true
1 + 1 === 3 || 2 + 2 === 5 //false
!(1 + 1 ===2) // false
!(1 + 1 ===3) // true
4. Truthy와 Falsy
자바스크립트에서 truthy(참같은 값)는 boolean을 기대하는 문맥에서 true를 기대하는 값이다. 따로 falsy(거짓같은 값)으로 정의된 것이 아니라면 truthy라고 생각하면 된다.
falsy에 해당하는 것은 다음과 같다.
- 0
- '' 또는 ""(빈 문자열)
- null (값이 완전히 없음)
- undefined (값이 정의되지 않음)
- NaN (숫자가 아님)
let username = "김코딩";
if (username) {
console.log("이름 O!!")
} else console.log("이름 X!!") // 이름 O
여기서 username에는 "김코딩"이 할당되었고, 따라서 username은 truthy가 되므로 조건문이 참이 된다.
let username = "";
if (username) {
console.log("이름 O!!")
} else console.log("이름 X!!") // 이름 X
여기서는 username에 빈 문자열이 할당되었기 때문에 falsy가 되므로 조건문이 거짓이 된다.
let username;
if (username) {
console.log("이름 O!!")
} else console.log("이름 X!!") // 이름 X
username에 아무것도 할당하지 않는다면 undefined 이므로 마찬가지로 falsy가 되서 조건문이 거짓이 된다. 이렇게 변수에 값이 제대로 할당되어 있는지 확인하는 조건문은 여러모로 유용할 수 있다.
5. 조건부 삼항 연산자(Conditional Ternary Operator)
if 문의 단축형태로 삼항 연산자를 사용할 수 있다.
condition ? expressionIfTrue : expressionIfFalse
조건 ? true일 때 명령문 : false일 때 명령문 형태로 써주면 된다.
function findMax(num1, num2) {
let max;
num1 >= num2 ? max = num1 : max = num2;
return max;
}
findMax (1, 3) // 3
findMax (5, 2) // 5
두 수 중 더 큰 값을 찾는 함수를 삼항 연산자를 사용해서 표현해봤다.
6. Switch문
조건문에서 조건의 개수가 많을 경우, if-else문을 계속 쓴다면 가독성이 떨어질 수 있는데, 이 때 switch문을 활용할 수 있다.
switch (expression) {
case value1:
statement1;
break;
case value2:
statement2;
break;
case value3:
statement3;
break;
default:
statement4;
}
expression의 결과가 value1이면 statement1을, value2면 statement2를, value3면 statement3를, 그 어느 것도 아니라면 default가 적용되어 statement4을 실행한다.
조건이 맞아 break를 만나면 그 이후의 비교는 하지 않으며, switch문을 종료시킨다.
default문은 switch문의 가장 마지막에 위치하므로 default 문의 실행이 종료하면 switch 문을 빠져나간다. 따라서 break를 생략하는 것이 일반적이다.
다음은 if-else문을 switch문으로 바꾸는 예시이다.
let num = 11;
if (num % 2 === 0) {
console.log("이 수는 짝수입니다!")
} else if (num % 2 === 1) {
console.log("이 수는 홀수입니다!")
} else {
console.log("양수를 입력해주세요!")
} // "이 수는 홀수 입니다!"
숫자가 홀수인지 짝수인지 판별하는 코드이다. 똑같은 기능을 하는 switch문을 작성해보았다.
let num = 11;
switch (num % 2) {
case 0 :
console.log("이 수는 짝수입니다!!");
break;
case 1 :
console.log("이 수는 홀수입니다!");
break;
default :
console.log("양수를 입력해주세요!");
} // "이 수는 홀수입니다!"
references
MDN Web Docs
http://hleecaster.com/javascript-conditionals/
https://dasima.xyz/javascript-switch/
Author And Source
이 문제에 관하여(TIL 007 | 조건문의 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ktg6360/TIL-007-조건문의-기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)