[220103] 자바스크립트 / let, const, ver, else if, 함수 심화,함수 연습문제
목차
1. 변수와 상수
2. 아스키코드
3. else if문
4. 함수 심화
5. 연습문제
let(변수)
- 변수를 선언
- 메모리에 저장할 수 있는 공간 확보
- 그 공간에 월요일 저장
- 즉, 선언을 하지 않으면 저장할 공간을 만들지 않았으므로 저장이 안됨. 에러발생. 집이 안 지어졌는데 입주를 어떻게 합니까.
- 자기가 가지고 있는 영역(code block)에서만 실행되는 모습
let a ="pale" //a라는 공간을 만들어서 저장
let a = "apple"//a라는 공간을 만들려고하지만 공간의 이름이 중복됨. 에러발생
{
let a="apple";
//code block
}
- 변수만 선언하고 값을 저장하지 않은 경우에 출력을 하면 뭐가 나올까? null상태인가? 아니면 더미값이 있나?
let red;
console.log(red); //이 결과는?
const(상수)
const str = "abd";
값이 절대 안 바뀐다.
ver vs
오래전에 자바스크립트가 나올때 쓰던 변수 선언 방식.
let const ES6가 나오면서 잘 안 쓰기 시작하고, 실무에서도 안 씀.
아스키코드
이제 슬슬 아스키코드를 쓸 줄 알아야 한다. 기본적인 아스키코드는 알아두자.
"따옴표도 "아스키코드"가 있다" 이건 어떻게 출력해야할까
기존의 방법 console.log("따옴표도 "아스키코드"가 있다") 라고하면 코드가 망가지며 에어가 뜬다.
따옴표를 다른 문자열(백틱``이나 쿼터'')로 감싸면 됨.
역슬래시는 개별기능(tab)을 지니고있어서 단일로 쓰면 에러가 가끔 난다. 방지하기 위해서 2개를 써줌.
let str1 ='따옴표도\n "아스키코드"가 있다';
let str2 =`따옴표도\n "아스키코드"가 있다`;
let str3 ="백슬래시도\n \\아스키코드\\가 있다";
저번 if문 수업이 이어서 진행하는 else if문
지난 if문 링크 : https://hancoco.tistory.com/13
- 첫번째 코드를 충족했음에도 끝나지않고 모든 코드를 실행한다.
let score=100;
if(score==100){
console.log("A"); // 100이네? 오키 너 A 출력
}
if(score==90){
console.log("A"); // 100이잖아? 출력 안함
}
if(score==80){
console.log("A"); // 100이잖아? 출력 안함
}
- 이 실행 횟수를 줄이려고 만든게 else if문이다.
- let score=80일때, else if (score==80)이 참이므로 해당 코드를 실행하고 끝을 낸다. 그 밑에 있는 코드는 실행하지 않음.
if(score==100){
console.log("A");
} else if(score==90){
console.log("B");
} else if (score==80){
console.log("C");
} else {
console.log("F");
}
함수 심화
함수를 왜 쓰느냐? 매번 쓰기 귀찮으니까. 아니 그냥 쓰면 안됨? 함수가 100줄 짜리면??
옮겨적다가 오타나면 100줄짜리를 검수해야하는 끔찍한 상황이 생기면 프로젝트 하는 팀원이랑 다같이 엉엉 우는 수밖에 없을걸.
편리하고자 쓰는거니까 제대로 알아두자.
함수 기초 설명 링크 : https://hancoco.tistory.com/15?category=1028077
함수를 사용하는 방법
1. 함수 정의
2. 함수 호출
1. 함수 정의
function sum(){ //메모리에 공간을 만들어서 이름을 sum이라고 붙이고
console.log("hello world") // 그 공간에 이 코드를 저장.
}
// 저장만 되어있는 상태!
2. 함수 호출
sum(); //함수를 불렀다!
//sum함수가 갖고있는 코드, console.log("hello world")가 실행이 된다!
3. return
- 이럴 경우 서로 다른 코드블럭에 갇혀있기때문에 에러가 난다.
let today='2022-01-03';
function sum(){
let ans = 3;
}
sum();
cosole.log(ans);
- 서로 다른 코드블럭에 저장했기때문에 ans에 저장된 값 3은 공유될 수 없다. 방법은 return을 통해서 값을 꺼내는 방법 밖에 없음.
let today='2022-01-03';
function sum(){
let ans = 3;
return answer;
}
let rst = sum(); //변수에 함수 sum()의 return값을 저장
console.log(rst); //좀 더 단순하게 sum()의 값을 출력하는 법
4. 매개변수, 인자
- 함수명 뒤에 있는 ()안에 임의의 변수명을 적을 수가 있다.
- 그리고 한개 이상을 넣을 수 있다. -> function sum(num1, num2, num3, num4){}
- 메모리적 설명을 하기엔 심화과정이라 지금 지식으로는 이해하기 어려움.
let today='2022-01-03';
function sum(num1, num2, num3, num4){
let answer;
answer = num3+num4+num1+num2;
return answer;
}
sum(1,2,'hello','wolrd');
//num3이 문자열이므로 문자열 연산이 된다.
//이건 return으로 반환만 되는거임.
let rst=sum();
console.log(rst); //인자가 없으므로 값이 없음. 출력값이 Nan이라고 뜸
console.log(sum(1,2,'hello','wolrd')); //출력
코드를 처리하는 방법 : 개념만 알아두자
쓰레드
스택구조 : 코드를 읽어서 차곡차곡 쌓고, 쌓인 순서대로 차례대로 실행함.
연습문제
1. 다음을 그리시오
|\_/|
|q p| /}
( 0 )"""\
|"^"` |
||_/=\\__|
console.log('|\\_/|');
console.log('|q p| /}');
console.log('( 0 )"""\\');
console.log('|"^"` |');
console.log('||_/=\\\_\_|');
console.log('\n');
// 한 줄로 만든다면
console.log('|\\_/|\n|q p| /}\n( 0 )"""\\\n|"^"` |\n||_/=\\\_\_|\n');
2. 마스크팩 봉투가 3개입, 5개입이 있다. 마스크 18개를 각 봉투를 가득채운다는 가정하에 총 몇 봉투가 나올꺄?
(단, 나눌 수 없으면 -1을 반환한다)
function solution(n){
let result;
for(let i=0; i<10; i++){
if(n>=0){
if((n%5)==0){
result=(n/5)+i;
return result;
}
else{
n=n-3;
}
} else {
return -1;
}
}
}
console.log(solution(18));
3번을 삽질하고 좀 단순화된 답. 단순화하는 습관을 들여야겠다.