변수
변수는 어떤 값을 식별하기 위한 저장소에 붙인 이름이다.
변수의 선언, 할당, 종류, 호이스팅
//변수는 아래와 같이 선언한다.
let nickName; // 변수가 선언되었다.
console.log(nickName) // -> undefiend // 값을 할당하지 않았지만, JS에서 undefiend를 할당하여 초기화
//변수에 값을 할당하는 방법은 아래와 같다.
nickName = YongTree;
console.log(nickName) // -> YongTree // 닉네임에 용트리 값이 할당되었다.
//변수를 선언할 수 있는 키워드 let, const, var
/*
let, const는 ES6 부터 도입된 변수 선언 키워드이다.
const는 상수를 의미하며, 해당 키워드로 선언하는 경우, 원시자료형의 값을 재할당 할 수 없다(참조자료형의 값은 수정 가능).
let 키워드로 선언하는 경우는 값을 재할당할 수 있다.
두 키워드 모두 재선언은 불가능하다.
*/
/*
var키워드는 ES6 이전까지 유일한 변수선언 키워드였다.
var키워드는 재선언도 가능하고, 값의 재할당도 가능하다.
var키워드의 특징 중 재선언이 가능하다는 점은 개발 시 개발자가 의도하지 않은 에러를 발생시키는 단점이 있었다.
var키워드는 블록레벨 스코프를 지원하지 않고, 함수레벨스코프만 지원하는 단점도 있었다.
이외에도 var키워드의 단점을 보완하고자 let, const 키워드가 등장했다.
*/
/*
변수는 호이스팅이 가능하다.
호이스팅이란 자바스크립트가 코드를 한줄씩 읽기 전에 미리 선언된 변수나 함수 클래스를 평가하여,
문서 최상단에서 실행시키는 것을 의미한다.
*/
while 문
//while문은 반복문의 한 종류이다. 아래와 같이 사용한다.
var n = 0;
var x = 0;
while (n < 3) {
n++;
x += n;
}
/*
let 변수 = 값; // 변수선언
while (조건식 === true) {
작동코드;
변수++(또는 변수--) 증감식;
}
*/
// 조건식이 참이면 작동하며, 조건식이 거짓이라면 이하 코드는 작동되지 않고 반복을 멈춘다.
데일리 코딩 문제
function computeWhenTriple(interestRate) {
//숫자(연이율)를 입력받는다.
//원금이 3배 이상이 되는 시간(숫자)을 리턴한다.
//결과를 저장할 변수를 선언한다.
let principal = 1;
let year = 0
while(principal < 3){
principal = principal + (principal * interestRate / 100) // 이자율을 별도로 변수로 선언해도 됨
//위계산식이 작동한후 하나씩 증가시킨다.
year++;
}
return year;
}
회고
function computeWhenTriple(interestRate) {
//숫자(연이율)를 입력받는다.
//원금이 3배 이상이 되는 시간(숫자)을 리턴한다.
//원금(principal) 변수를 만들어서 값 1을 할당한다.
let principal = 1;
//원금이 3배 이상이 되는 시점의 햇수가 필요하기 때문에 year변수를 선언하고 0을 할당한다.
let year = 0
while(principal < 3){ // 원금이 3배 이하일때만 아래 코드가 작동한다.
principal = principal + (principal * interestRate / 100) //[{(원금+이자)+이자}...+이자]
//위계산식이 작동한 횟수?
year++; //위코드가 작동되면 year의 값이 1증가한다.
}
return year; //year를 반환한다.
}
//for문으로 바꾸면?
function computeWhenTriple(interestRate) {
let principal = 1;
let rate = 1 + interestRate / 100;
let year = 0;
for(let i = 0; principal < 3; i++){
principal = principal * rate;
year = year + i;
}
return year;
}
/*
이해가 잘 안됐던 부분은 조건식 부분과 year의 증가를 어떻게 시켜야 하는가였다.
조건식의 경우, 원금이 3배가 된다라는 말을 코드로 바꾸기 어려웠다.
그리고 year의 증가의 경우, 코드가 작동할 때마다 year에 1년씩 증가시켜야 하는데
이 문장을 코드로 표현하는게 어려웠다.
에러가 났던 부분은 원금에 이자를 더하는 식을 작성한 부분에서 에러가 발생하였다.
에러가 발생했을 때는
principal = principal * interestRate / 100을 입력하자 실행시간이 초과되었다는 에러가 발생하였다.
이에 principal = principal + interestRate / 100을 입력하니,
100과 200을 이자로 전달받았을 때 이외의 테스트케이스가 통과되지 않았다.
마지막으로 while문 내의 식과 같이 작성하자 정상적으로 작동하였다.
레퍼런스를 참조한 결과 rate라는 변수에 이자율 계산식을 할당하여 반복문 내에서는 원금*이자율로
표현할 수 있다는 점을 알게되었다.
'SEB_FE_45(코드스테이츠) > section 2.' 카테고리의 다른 글
데일리코딩 ] 2차원 배열을 이용하여 객체 만들기 (0) | 2023.05.24 |
---|---|
야자라니..] Unit 4. React Intro 및 야간 자율학습 과제 (0) | 2023.05.18 |
데일리코딩 ] 배열을 객체로 바꾸기 (0) | 2023.05.17 |
TIL] Unit 2. 객체지향프로그래밍(프로토타입과 클래스) (0) | 2023.05.11 |
TIL] Unit 2. 객체지향프로그래밍(캡슐화, 추상화, 상속 등) (0) | 2023.05.11 |