본문 바로가기

자바스크립트

[❤️두근두근 자바스크립트 공략❤️] 3장 조건문, 4장 반복문

728x90

교재 : 자바스크립트 프로그래밍 입문

(정말 뜬금없지만 이 책 순서가 굉장히 뒤죽박죽이어서 조건문하다가 뜬금없이 이상한 내용이 나오기도 한다.)

 

1. if~else

let input = 32;

if(input%2==0 && input!=0) console.log("짝수");
else if (input==0) console.log('0');
else console.log('홀수');

 보다시피 C와 굉장히 유사한 형태다. 

 

 


2. 현재 시간 구하기 

 현재 시간은 2022523요일, 오전 1502초다. 

let date = new Date();  // Date 객체 생성

console.log(date.getFullYear()) // 2022
console.log(date.getMonth()+1)  // 0~11을 리턴하므로, +1을 해주어야 함
console.log(date.getDay())      // 요일 리턴, 0은 일요일
console.log(date.getHours())
console.log(date.getMinutes())
console.log(date.getSeconds())

 


3. 입력받기(숫자 or 문자열 구분)

: 코드가 있긴 있는데, 굉장히 비효율적이다. node.js는 느린코드(사용자의 응답, 파일을 읽어 들이는 시간, 통신에 사용되는 시간)을 절대 용납하지 못하기 때문에 코드가 그리 예쁘진 않다.

const repl = require('repl');

repl.start({
    prompt: '입력>> ',
    eval: (command, context, filename, callback) => {
        let number = Number(command);
        if (isNaN(number)) console.log('숫자 아님.');
        else console.log('숫자임');

        callback();
    }
});

  • 웹 브라우저에서 작동하는 자바스크립트는 prompt() 함수를 사용하면 됨. 
  • node.js? 노드를 통해 다양한 js 애플리케이션을 실행하게 만드는 프로그램(환경)- 솔직히 뭔 소린지 모르겠음.

 


4. 배열 선언

let array = ['치킨', '2', '마리', true];
console.log(array);

let array2 = ['치킨', '2', '마리', true, ['먹겟어']];
console.log(array2);

 

 배열 선언은 파이썬이랑 비슷한데 더 자세한 건 조금 다르다.

 

4-1. 배열 인덱싱

let array2 = ['치킨', '2', '마리', true, ['먹겟어']];
console.log(array2);
console.log(array2[-1]);
console.log(array2[4]);

  • 리스트 내 리스트가 안 되는? 구조인 것 같다.
  • 인덱싱은 되는데 파이썬처럼 -1은 안 됨
  • 리스트 내 리스트 인덱스 번호를 출력하면 해당 요소가 보인다
  • Array(숫자)에서 숫자는 안에 들어 있는 요소의 개수.

 


5. 배열 요소 변경

let array2 = ['치킨', '2', '마리', true, ['먹겟어', 2, '꺙']];
console.log(array2);
array2[0] = '피자';  // 0번째 인덱스 변경
console.log(array2);

 


6. index out of range 없음

let array2 = ['치킨', '2', '마리', true, ['먹겟어', 2, '꺙']];
console.log(array2[1000]);  // index out of range

: 파이썬 이었으면 당연히 error가 났겠지만 자바스크립에서는 에러가 나지 않는다!!!

 

 


7. length 배열 길이 재기

let array2 = ['치킨', '2', '마리', true, ['먹겟어', 2, '꺙']];
console.log(array2.length);  // index out of range

 

 


8. for문

let a = 18;
var output = `소곡이의 현재 나이는 ${a} 세입니다.`;

for (let i = 0; i<3; i++) console.log(output);

for (let i = 0; i<3; i++){
    a++;
    var output = `소곡이의 현재 나이는 ${a} 세입니다.`;
    console.log(output);
}

 

 


9. for in(배열 인덱스) vs for of(배열 요소)

let array = ['소주', '맥주', '복분자', '샴페인'];

for (let i in array) console.log(`${i} 번째 요소: ${array[i]}`); //인덱스 번호
for (let item of array) console.log((item)); // 배열 요소

: 내가 좋아하는 거!!!

 


10. while

let pro = ['온', '김', '정', '손', '이'];
let i =0;

while(i<pro.length){
    let output = `${pro[i]} 교수님`;
    console.log(output);
    i++;
}

while(true) console.log('사랑합니다.');

 

10-1. 시간을 이용한 반복문 이탈

let start = new Date().getTime();
let count = 0;

while(start + (100 * 3) > new Date().getTime()){
    count++;
}

console.log(count + '만큼 반복함');

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 


11. 스코프(=블록): 변수를 사용할 수 있는 범위

  • 지역변수 사용 범위라고 생각하면 편할 것 같다. 
  • 오른쪽은 2줄까지 갔을 때 메모리 상태이다. 

  • 첫번재 블록(6~10라인)에서 a와 b를 출력하니, 첫번째 블록에서 선언된 a(3)가 출력되고 b는 따로 정의 되지 않았으므로 전역변수 b(1)이 출력되었다.

  • 블록을 지나고나서 해당 변수(a-3)은 사라졌다. 

 


12. 호이스팅: 해당 블록에서 사용할 변수를 미리 확인해서 정리하는 작업

let a = 1;
{
    console.log(a);
    let a = 2;
}

 이런 코드를 실행 시키면 출력이 어떻게 나올까??

.

.

.

 

정답= 에러남

 

저 상태에서 메모리 상태는 다음과 같다. 즉 해당 블록에서 사용할 변수는 미리 블록의 가장 위에 적어야 한다는 뜻이다.(전역변수에 똑같은 이름의 변수가 있다고 해서 그 변수를 출력하는게 아님!!)

 

 


연구실에 벌렐 드러와서 검톤안하고 바로 올립니디ㅏ이ㅓㅏ으아아아앙아가