JS - 06_조건문

송철진·2022년 9월 12일
0

Boolean의 활용

	console.log(1 + 1 === 2)			// true
    console.log('mobile' === 'MOBILE')	// false

Boolean과 조건문

만약 (조건)이 참(true) 이라면 ~ / 거짓(false) 이라면 ~

구글 검색: 자바스크립트 비교연산자

  • 일치(===), 불일치(!==), 작거나 같음(<=), 크거나 같음(>=), 작음(<), 큼(>)
	if(조건1) {
    	결과,동작
    }else if(조건2){
    	결과,동작
    }else{
    	결과,동작
    }

구글 검색: 자바스크립트 논리연산자

  • AND(&&), OR(||), NOT(!)

Truthy, Falsy

구글 검색: 자바스크립트 truthy falsy

  • Truthy: 불리언이 들어갈 거 같은 자리에 들어가서 true로 평가되는 것
    falsy가 아닌 값들..
  • Falsy: 0, -0, 0n, ""(빈 string), null, undefined, NaN
	let a = 0;  //falsy
	let b = 100;  //truthy: 

	if(a){
  		console.log("a is falsy")
	}else if(b){
  		console.log("b is truthy")
	}
    // "b is truthy"
    // 숫자100이 true는 아니지만 if문 내에서 true인 것처럼 동작함

Assignment

01. isOkToDrive

/*
- 함수의 인자 who 가 "son" 이면 "Nope!" 리턴
- 함수의 인자 who 가 "dad" 이면 "Good!" 리턴
- 함수의 인자 who 가 "grand father" 이면 "Be careful!" 리턴
- 나머지의 경우 "Who are you?" 리턴
*/

function isOkayToDrive(who) {
  if(who === "son"){
    return "Nope!";
  }else if(who === "dad"){
     return "Good!"; 
  }else if(who === "grand father"){
    return "Be careful!"
  }else{
    return "Who are you?"
  }
}
console.log("SON~! " + isOkayToDrive("SON"))
console.log("DAD~! " + isOkayToDrive("DAD"))
console.log("GRAND FATHER~! " + isOkayToDrive("GRAND FATHER"))
console.log("MOM~! " + isOkayToDrive("MOM"))

module.exports = { isOkayToDrive }

02. checkAge

/*
- 이름(name)과 나이(age)를 입력받는 checkAge라는 함수는 나이에 따라 다른 메시지를 리턴합니다.
- 만일 나이가 21살보다 적으면, "Go home, (name)!"
- 나이가 21살이거나 더 많으면, "Nice to meet you, (name)!" 을 리턴하세요.
- 쉼표와 공백, 느낌표까지 정확히 리턴해야 합니다.
*/
function checkAge(name, age) {
  if(age < 21){
    return "Go home, " + name + "!";
  }else if(age >= 21){
    return "Nice to meet you, " + name + "!"
  }
  
}
console.log(checkAge("Jane", 3), "너 아직 21살 안됐잖아.")
console.log(checkAge("Donald", 21), "너는 21살 이상이야.")
module.exports = { checkAge }

03. equalsWecode

/*
equalsWecode 함수를 작성하세요.

- 이 함수는 주어진 문자열이 "wecode"와 같은지의 여부에 따라 true 혹은 false를 반환합니다.
*/
function equalsWecode(string) {
  if(string === "wecode"){
    return true;
  }else{
    return false;
  }
  
}
let a = "Wecode";
let b = "wecode"
console.log(" Is " + a + " equal to wecode?", equalsWecode(a))
console.log(" Is " + b + " equal to wecode?", equalsWecode(b))
module.exports = { equalsWecode }

04. findGreaterNumber

/*
- 두 숫자가 주어졌을 때 어느 숫자가 더 큰지의 여부에 따라 다른 메세지 값을 리턴합니다.
- 첫번째 숫자(num1)가 두번째 숫자(num2)보다 더 큰 경우 "First one is greater!" 리턴
- 두번째 숫자(num2)가 첫번째 숫자(num1)보다 더 큰 경우 "Second one is greater!" 리턴
- 첫번째 숫자(num1)와 두번째 숫자(num2)가 같은 경우 "Same!" 리턴
*/
function findGreaterNum(num1, num2) {
  if(num1 > num2){
      return "First one is greater!";
  }else if(num1 < num2){
      return "Second one is greater!";
  }else if(num1 === num2){
      return "Same!"
  }
}
console.log(findGreaterNum(100,1))
console.log(findGreaterNum(100,1090))
console.log(findGreaterNum(3,3))

module.exports = { findGreaterNum }

05. isEven

// isEven 함수는 주어진 숫자가 짝수인지의 여부를 반환합니다.
function isEven(num) {
  if(num % 2 === 1){
    return false;
  }else if((num !== 0) && (num % 2 === 0)){
    return true;
  }else{
    console.log(num + "에 2를 나눈 나머지는 " + num % 2);
    return "Please enter an natural number";
  }
}
console.log(isEven(42))
console.log(isEven(79))
console.log(isEven(993.1))
console.log(isEven("12" + "12"))
console.log(isEven("12" + 1))
console.log(isEven("apple"))
console.log(isEven(-15))

module.exports = { isEven }

🤔 왜 993.1을 2로 나눈 나머지는 1.1000000000000227 일까?

06. isOddAndGreaterThanTwenty

// isOddAndGreaterThanTwenty 함수를 작성하세요.
//- 숫자가 주어졌을때 주어진 숫자가 홀수이고 20보다 큰 경우에만 true를 반환합니다.
function isOddAndGreaterThanTwenty(num) {
  if((num % 2 === 1) && (num > 20)){
    return true;    
  }else{
    return false;
  }
}
console.log(isOddAndGreaterThanTwenty(17))		//false
console.log(isOddAndGreaterThanTwenty(33))		//true
console.log(isOddAndGreaterThanTwenty(54))		//false
console.log(isOddAndGreaterThanTwenty(-153))	//false
console.log(isOddAndGreaterThanTwenty("true"))	//false
console.log(isOddAndGreaterThanTwenty(0))		//false
console.log(isOddAndGreaterThanTwenty(56.3))	//false

07. whichGrade

/*
- 점수가 주어졌을때 주어진 점수에 따라 서로 다른 등급을 문자열로 반환합니다.
- (100 이하 ~ 90 이상)  --> 'A'
- (89 이하 ~ 80 이상)  --> 'B'
- (79 이하 ~ 70 이상)  --> 'C'
- (69 이하 ~ 60 이상)  --> 'D'
- (59 이하 ~ 0 이상)  --> 'F'
- 점수가 100을 초과하거나 0 미만인 경우  --> 'INVALID SCORE'
*/
function whichGrade(score) {
  if(score <= 100 && score >= 90){
    return 'A';
  }else if(score <= 89 && score >= 80){
    return 'B';
  }else if(score <= 79 && score >= 70){
    return 'C';    
  }else if(score <= 69 && score >= 60){
    return 'D';    
  }else if(score <= 59 && score >= 0){
    return 'F';    
  }else if(score > 100 || score < 0){
    return 'INVALID SCORE';
  }
}

08. or

/*
- 인자로 주어진 expression1과 expression2는 boolean 타입입니다.
- 두 인자가 모두 `false`인 경우에는 `false`를 반환하며 그 이외의 경우에는 모두 `true`를 반환합니다.
주의)
- `||` 연산자를 사용하지 마세요.
- 대신 `!` 와 `&&` 연산자를 사용하세요.
*/
function or(expression1, expression2) {
  if(expression1 !== true && expression2 !== true){
    return false;
  }else{
    return true;
  }
}

console.log(or(true,true))		// true
console.log(or(false,true))		// true
console.log(or(true,false))		// true
console.log(or(false,false))	// false

module.exports = { or }

09. isEitherEvenAndLessThan9

/*
- 함수의 인자로 숫자 두개가 주어졌을때 함수는 2가지 조건을 검사합니다.
- 우선 두 숫자 중 적어도 하나가 짝수인지 확인합니다.
- 그리고 두 숫자 모두 9보다 작은지를 확인합니다.
- 두 조건을 모두 만족하는 경우만 true를 반환합니다.
*/
function isEitherEvenAndLessThan9(num1, num2) {
  if(num1 * num2 !== 0 && (num1 % 2 === 0 || num2 % 2 === 0) ){
    if(num1 < 9 && num2 < 9){
      return true;
    }else{
      return false;
    }
  }else{
    return false;
  }
}
function isEitherEvenAndLessThan9(num1, num2) {
  if(num1 * num2 !== 0 && (num1 % 2 === 0 || num2 % 2 === 0) && (num1 < 9 && num2 < 9)){
  return true;
    }else{
      return false;
    }
}
console.log(isEitherEvenAndLessThan9(3,4))		// true
console.log(isEitherEvenAndLessThan9(32,4))		// false
console.log(isEitherEvenAndLessThan9(3,40))		// false
console.log(isEitherEvenAndLessThan9(0,0))		// false

module.exports = { isEitherEvenAndLessThan9 }
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글