프로그래밍/javacscript

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

한코코 2022. 1. 3. 10:23

목차

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