JavaScript 기초부터 배우기 - 3

donggae·2023년 9월 19일
0

JavaScript

목록 보기
3/7
post-thumbnail

1. 조건문

조건문을 사용하면 특정 조건이 만족했을 때 특정 코드를 실행 할 수 있는 구문

1-1. if문

if(...)문은 괄호 안에 들어가는 조건을 평가, 그 결과가 true이면 해당 코드 블럭이 실행
-> 괄호 안의 표현식을 평가 -> 불린 값으로 변환

  • 숫자 0, 빈 문자열 "", null, undefined, Nan 모두 불린형으로 변환 시 false
const number = 1;
if(a + 1 === 2) {
	console.log("정답입니다."); // ()안의 조건이 true이니 정답입니다가 출력이 된다.
};

그럼 a 의 값을 바꾼다면?

const number = 9;
if(a + 1 === 2) {
	console.log("정답입니다."); // ()안의 조건이 false이니 아무것도 출력이 되지 않는다.
};

1-2. if-else문

if(...)문의 괄호 안에 들어가는 조건을 평가하고 그 결과가 false일 때 실행되게 끔 하는 코드 블럭

const number = 9;
if(a + 1 === 2) {
	console.log("정답입니다."); 
} else {
	console.log("오답입니다/"); // ()안의 조건이 false이니 else문의 코드 블럭이 실행된다. 오답입니다가 출력이 된다.
}; 

특정 조건이 만족할 때와 만족하지 않을 때 서로 다른 코드를 실행해야 된다면 if-else문을 사용 할 수 있다.

1-3. if-else if문

여러 조건에 따라 다른 코드 블럭을 실행해야할 때 사용한다.

const rank = 60;

if (rank >= 90) {
	console.log("A+");
} else if (rank >= 65) {
	console.log("B+");
} else {
	console.log("F"); // 위 두개의 조건이 모두 충족이 되지 않았기에 F가 출력
}

위의 조건식을 보면 지금은 위의 두 조건이 충족이 되지 않아 F가 출력 되었지만,
값이 올라가면 B+, A+이 출력 될 수 있다.
그렇기에 if-else if문은 여러 조건이 있을 때 사용하면 유용하다.

1-4. switch/case 문

switch/case 문은 특정 값이 무엇이냐에 따라 다른 코드 블럭을 실핼 할 때 사용한다.

const device = 'iphone13';

switch (device) {
  case 'iphone13':
    console.log('아이폰 15로 바꾸고 싶어요');
    breack;
  case 'iphone14' : 
    console.log('아이폰 15로 바꾸고 싶어요');
  	breack;
  case 'iphone15' : 
    console.log('아이폰 15 pro로 바꾸고 싶어요');
    break;
  default:
    console.log('아이폰 15가 최고입니다.');
}

device 값을 'iphone13', 'iphone14', 'iphone15' 에 따라 다른 코드 블럭이 실행이 된다.
가장 밑의 default는 case로 준비하지 않는 값일 경우 실행 되는 코드 블럭이다.

2. 반복문

특정 작업을 반복적으로 할 때 사용할 수 있는 구문

2-1. for

가장 기본적인 반복문 우리가 정한 조건이 만족 -> 반복

for( let i = 0; i  < 10; i ++) {
	console.log(i); // 0 부터 9 까지 출력
}

2-2. while

특정 조건이 참 -> 반복, 언젠간 false가 되도록 해야함

let i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

조건문 내부에서 변화를 직접 주어야 성립

2-3. for of

배열을 위한 반복문

let numbers = [1, 2, 3, 4, 5, 6];
for (let number of numbers ) {
	console.log(number); // 1 부터 6 까지 출력
}

2-4. for...in

객체를 위한 반복문

const user = {
	name : "Hyun",
  	height : "200",
  	age : 27, 
};

console.log(Object.entries( user ));
console.log(Object.keys( user ));
console.log(Object.values( user ));
  • Object.entries - [[키, 값], [키, 값]] 형태의 배열로 변환
  • Object.keys - [키, 키, 키] 형태의 배열로 변환
  • Object.values - [값, 값, 값] 형태의 배열로 변환

위의 코드를 for ... in으로 전환해보자

const user = {
	name : "Hyun",
  	height : "200",
  	age : 27, 
};

for (let key in user) {
	console.log(key, user[key]);
};

둘 중 상황에 맞게끔 사용하면 될 듯 하다

3. 정리하는 문제

  1. 유저가 입력하는 숫자가 0인지 음성인지 양성인지 판단하는 로직 짜기
const score = 1;

if (score < 0){
	console.log("음수입니다.");
} else if (score > 0) {
	console.log("양수입니다.")
} else {
	console.log("0입니다.")
}
  1. 레포트 점수에 따른 등급을 메기는 로직 짜기
const score = 100;
let grade = ''

if (score >=90 && score <= 100) {
	grade = 'A';
} else if (score >= 80 && score <= 89) { 
	grade = 'B';
} else if (score >= 70 && score <= 79) {
	grade = "C";
} else if (score >= 60 && score <= 69) {
	grade = "D";
} else if (score >= 0 && score <= 59) {
	grade = "F";
} else {
	cosnole.log("점수를 다시 입력해주세요");
}
  1. 지원자의 스택이 ["HTML", "CSS", "JavaScript", "React"] 가 있다
    이 중 JS, React 둘다 가능하면 "합격", 둘 중 하나만 할 줄 알면 "예비", 두 스킬이 없으면 "탈락"하는 로직 짜기
let userSkills = ["HTML", "CSS", "JavaScript", "React"];

if (userSkills.includes("JavaScript") && userSkills.includes("React")) {
	console.log("합격");
} else if (userSkills.includes("JavaScript") || userSkills.includes("React")) {
	console.log("예비");
} else {
	cosnole.log("탈락");
}
  1. 프로그래머스 코테 연습 문제 1
    정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
function solution(numbers) {
    var answer = 0;
    var sum = 0;
    for (let i = 0; i < numbers.length; i++) {
        sum += numbers[i];
        answer = sum / numbers.length;
    }
    
    return answer;
}
  1. 프로그래머스 코테 연습 문제 2
    정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
function solution(n) {
    var answer = 0;
    for (var i = 0; i <= n; i += 2) {
        answer += i;
    }
    return answer;
}

범위가 작은 것 부터 하나씩 해결 하기 조건에 대한 생각을 천천히 해보면 될 듯 하다
아직은 익숙하지 않아서 그런 느낌인데 하다 보면 많이 늘 것이다.

profile
아자자자

0개의 댓글