본문 바로가기
프로그래밍/javacscript

[220103] 자바스크립트 / let, const, ver, else if, 함수 심화,함수 연습문제

by 한코코 2022. 1. 3.

목차

1.   변수와 상수

2.   아스키코드

3.   else if문

4.   함수 심화

5.   연습문제


let(변수)

  1. 변수를 선언
  2. 메모리에 저장할 수 있는 공간 확보
  3. 그 공간에 월요일 저장
  4. 즉, 선언을 하지 않으면 저장할 공간을 만들지 않았으므로 저장이 안됨. 에러발생. 집이 안 지어졌는데 입주를 어떻게 합니까.

 

  • 자기가 가지고 있는 영역(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

 

[211230] 자바스크립트 / 변수, 예약어, 연산자, if문, for문

자바스크립트가 나타난 배경 최초의 브라우저 넷스케이프 (jsc는 없었음) -> 10일만에 jsc 쨔잔! 만들어냄. 그러니까 저급한 단어란걸 인식하고있자. -> 윈도우 마소가 넷스케이프 카

hancoco.tistory.com

 

  • 첫번째 코드를 충족했음에도 끝나지않고 모든 코드를 실행한다.
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 

 

[211231] for문 응용, 배열과 객체, 함수, return

for ( 초기문; 조건문; 증강문) for문의 목표 : 내가 같은 코드를 몇번을 반복시킬 것인가 for(let i=1; i for문과 if문을 응용한 코드. 1부터 10까지 출력하면서 5가 출력될때는 hello, world를 출력한다. 배

hancoco.tistory.com

 


함수를 사용하는 방법

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번을 삽질하고 좀 단순화된 답. 단순화하는 습관을 들여야겠다.

댓글