[34일차] 자료형 & 연산자 & 조건문 & 반복문 & 함수

2023. 2. 9. 16:13데이터 엔지니어링 과정

목차
1. 자료형
2. 연산자
3. 조건문 다루기
4. 반복문 다루기
5. 함수를 정의하는 법
6. 함수 기능 확장학기
7. 함수의 특징 이해하기

1. 자료형

1. 문자열

  • 문자열에 따옴표가 포함된 경우
    • 큰 따옴표를 포함할 때 ➡ 작은 따옴표로 문자열 감싸기
    • 작은 따옴표를 포함할 때 ➡ 큰 따옴표로 문자열 감싸기
    • 역슬래시 사용 가능
let string1 = "문자열은 작은따옴표'로 감싸면 됩니다.";
let string2 = '문자열은 끈따옴표"로 감싸면 됩니다.';
console.log(string1);
console.log(string2);

let string = '문자열은 큰따옴표"나 작은따옴표\'로 감싸면 됩니다.';
console.log(string);

  • 템플릿 문자열
    : 백틱(`)으로 문자열을 정의하는 방법
    • 기존 문자열 정의 방식으로 큰따옴표나 작은따옴표로 문자열을 정의하지 않기 때문에 문자열에 큰따옴표나 작은따옴표가 있어도 영향 받지 않음
    • 엔터를 눌렀을 때 줄바꿈 적용 ➡ 이스케이프 문자 사용하지 않아도 됨
    • ${} 문법을 이용해서 변수 또는 식을 넣을 수 있음
let dan = 3;
let gugu = 8;
let stirng = `${dan} 곱하기 ${gugu}은 ${dan * gugu} 입니다.`;
console.log(stirng);

2. 숫자형

  • 정수와 실수 구분하지 않고 전부 하나의 숫자 자료형(숫자형)으로 취급
  • 실수를 계산할 때는 정확하지 않기 때문에 주의해야 함
let num1 = 10;
let num2 = 0.1;
console.log(num1);
console.log(num2);

3. 논리형

  • 논리적인 연산 구할 수 있음
let boolean1 = 10<20;
let boolean2 = 10>20;
console.log(boolean1);
console.log(boolean2);

4. undefined & null

  • undefined
    : 사용자가 임의로 정의하고 할당하는 자료형이 아님
  • null
    : 변수나 상수를 선언하고 의도적으로 선언한 공간을 비워 둘 때 할당
let empty1;
console.log(empty1);
let empty2=null;
console.log(empty2);

5. 객체

  • 배열
    : 복수의 데이터를 정의할 수 있는 자료형
let studentScore = [80, 70, 90, 60]
console.log(studentScore[1]);

  • 객체 리터럴
    • 객체를 정의하는 가장 간단한 방법
    • 객체를 정의할 때 중괄호{}를 사용
      • 중괄호 안에는 키와 값의 한쌍으로 이루어진 속성 들어감
    • 장점
      • 값을 키로 구분
let studentScore = {
    koreanScore:80,
    englishScore:70,
    mathScore:90,
    scienceScore:60
};
console.log(studentScore.koreanScore);
console.log(studentScore['englishScore']);

 

2. 연산자

1. 산술 연산자

  • 단항 산술 연산자 (=증감 연산자)
    • 변수나 상수에 할당된 데이터로만 연산 가능
    • 숫자에 바로 사용하는 건 불가능
let increment = 10;
increment ++;
let decrement = 10;
decrement --;
console.log(increment);
console.log(decrement);

2. 비교 연산자

연산자 설명
== x == y x와 y의 값이 같으면 true 반환
=== x === y x와 y의 값과 자료형이 같아야 true 반환
!= x != y x와 y의 값이 다르면 true 반환
!== x !== y x와 y의 값과 자료형이 다르면 true 반환

3. 논리 연산자

연산자 설명
&& x && y x가 참이면 y를 반환, 거짓이면 x 반환
|| x || y x가 참이면 x를 반환, 거짓이면 y 반환
! !x x가 참이면 false 반환, 거짓이면 true 반환
  • 어떤 피연산자든 모두 논리형으로 평가
  • ""(빈문자열), undefined, 0, null만 거짓

4. 삼항 연산자

  • 세 항 중 가장 왼쪽에 있는 피연산자의 참, 거짓에 따라 나머지 두 항에 있는 피연산자를 선택적으로 반환하는 연산 수행
let score = 90;
let grade = score >= 90 ? 'A+' : 'B';
console.log(grade);

5. 형 변환

  • 암시적 형 변환
const result = 10 + "10";
console.log(result);

  • 명시적 형 변환
    : 드러나게 형 변환 처리 
let num =10;
let strNum = "10";
if (String(num) == strNum) {
    console.log(`equals`);
}

 

3. 조건문 다루기

1. if, else, else if 문

let num = 0;
if (num > 0) {
    console.log("양수");
} else if (num < 0) {
    console.log("음수");
} else {
    console.log("0");
}

2. switch 문

  • switch 뒤에 오는 소괄호 안의 값과 일치하는 case 문이 있을 때 해당 코드를 실행하는 조건문
  • 일치 여부 확인은 일치 연산자(===)를 사용한 비교 연산처럼 값과 자료형을 함께 비교
  • 하나 이상의 case문과 default문, break문이 사용
let food="melon";
switch(food){
    case "melon":
    case "apple":
    case "banana":
        console.log("fruit");
        break;
    case "carrot":
        console.log("vegetable");
        break;
    defalut:
        console.log("It's not fruits and vegetables.");
        break;
}

3. if문과 조건식

let score = 90;
if (score >= 90 && score <= 100) {
    console.log("A++ 학점");
}

4. if문 vs switch 문

let score = 90;
switch(score){
    case 90:
    case 91:
    case 92:
    case 93:
    case 94:
    case 95:
    case 96:
    case 97:
    case 98:
    case 99:
        console.log("A++ 학점");
        break;
    default:
        break;
}

 

4. 반복문 다루기

1. while문

let num = 1;
while (num <= 9999){
    console.log(num);
    num ++;
}

2. do...while문

  • 특정 조건이 참으로 평가되는 동안 do 다음에 오는 블록문을 반복 실행
do{
    console.log(`무조건
한 번은 실행`);
} while(false);

3. for문

  • 초깃값 ➡ 조건식 ➡ 블록문(조건식이 참일 경우) ➡ 증감식 ➡ 조건식
    순서로 실행
for (let i = 0; i < 5; i++) {
    console.log(i);
}

4. for문과 배열

let arr = ["banana","apple","orange"];
for(let i = 0; i<arr.length; i++){
    console.log(arr[i]);
}

5. for...in

  • 객체 리터럴 반복
    : 탐색 결과로 가변수에 객체 리터럴의 키가 할당되어 객체 리터럴의 키와 값을 출력할 수 있음
let obj = {name:"철수", age:"20"};
for (let key in obj){
    console.log(key + ": "+obj[key]);
}

  • 배열 반복
let arr = ["orange", "banana", "apple"];
for (let index in arr){
    console.log(index+ ": "+arr[index]);
}

6. break 문

for(let i = 0; i < 10; i++){
    console.log(i);
    if(i == 5) break;
}

let obj = {name:"철수", age:20};
for (let key in obj) {
    if (key ==="age") break;
    console.log(obj[key]);
}

7. continue 문

  • 반복문을 건너뛰고 실행하라는 명령
for (let i = 1; i <= 10; i++) {
    if (i % 2 === 1) continue;
    console.log(i);
}

 

5. 함수를 정의하는 법

1. 함수

어떤 목적을 가지고 작성한 코드를 모아 둔 블록문

function gugudan(){
    for(let i=1; i<=9; i++) {
        console.log(`3 * ${i} = ${3 * i}`);
    }
}

2. 함수 선언문으로 함수 정의하기

gugudan();

3. 함수 표현식으로 함수 정의하기

  • 변수에 할당하는 함수에 식별자 있으면 네이밍 함수
    없으면 익명 함수
  • const 사용
// naming 함수
const gugudan = function gugudan(){
    for(let i=1; i<=9; i++) {
        console.log(`3 * ${i} = ${3 * i}`);
    }
}

gugudan();
// dlraud 함수
const gugudan = function (){
    for(let i=1; i<=9; i++) {
        console.log(`3 * ${i} = ${3 * i}`);
    }
};

gugudan();

4. 화살표 함수로 함수 정의하기

  • 익명 함수로만 정의 가능
const gugudan = () => {
    for(let i=1; i<=9; i++) {
        console.log(`3 * ${i} = ${3 * i}`);
    }
};

gugudan();

 

6. 함수 기능 확장하기

1. 매개변수와 인수

  • 매개변수: 함수 정의할 때 외부에서 전달하는 데이터를 함수에서 받을 수 있도록 정의하는 변수
  • 인수: 정의한 함수를 호출할 때 소괄호 안에 전달하고 싶은 데이터
function gugudan(dan){
    for (let i = 1; i <= 9; i++){
        console.log(`${dan} * ${i} = ${dan * i}`);
    }
}

gugudan(4);

2. 매개변수의 특징

  • 명명 규칙
    : 변수의 식별자 명명 규칙과 동일
  • 데이터 전달
  • 기본값 할당
function sum(a = 10, b = 10) {
    console.log(a,b);
}
sum();

3. return 문

function sum(num1, num2) {
    return num1 + num2;
}
const result = sum(10,20);

console.log("out: "+ result);

  • return문 다음에 코드가 있더라도 함수 실행을 즉시 종료하고 undefined를 반환
function sum(num1, num2) {
    if(typeof num !== "number" || typeof num2 !== "number") {
        return;
    }
    return num1 + num2;
}
let result = sum("a","b");
console.log("out: "+result);

  • 화살표 함수에서 {}를 생략하면 화살표 다음에 오는 코드는 return문으로 처리
const sum = (num1, num2) => num1 + num2;
const result = sum(10,20)

 

7. 함수의 특징 이해하기

1. 스코프

  • 변수나 함수와 같은 참조 대상 식별자를 찾아내기 위한 규칙
  • 함수 스코프 방식이냐 블록 스코프 방식이냐에 따라 전역 스코프와 지역 스코프의 참조 범위가 달라짐
  • 함수 스코프
    • 함수에서 정의한 블록문만 스코프의 유효 범위로 인정하는 방식
    • 함수 내부는 지역 스코프, 외부는 전역 스코프
    • 전역 스코프는 스코프와 상관없이 모두 참조 가능
let a = 10;
function sum(){
    console.log(`함수 내부 : ${a}`);
}
sum();
console.log(`함수 외부 : ${a}`);

  • 블록 스코프
    • {}로 구성된 블록문 기준으로 스코프의 유효 범위를 나누는 방식
    • let과 const 키워드로 선언한 변수에 한해서만 적용
let a = 10;
{
    let b = 20;
    console.log(`코드 블록 내부 a: ${a}`);
    console.log(`코드 블록 내부 b: ${b}`);
}
console.log(`코드 블록 외부 a: ${a}`);
console.log(`코드 블록 외부 b: ${b}`);

var a = 10;
{
    var b = 20;
    console.log(`코드 블록 내부 a: ${a}`);
    console.log(`코드 블록 내부 b: ${b}`);
}
console.log(`코드 블록 외부 a: ${a}`);
console.log(`코드 블록 외부 b: ${b}`);

  • 참조 우선순위
    :
    같은 스코프 영역에서 중복 선언 불가능
let a = 10;
const b = 20;
function sum(){
    let a = 50;
    const b = 70;
    console.log(`함수 내부 a: ${a}`);
    console.log(`함수 내부 b: ${b}`);
}
sum();

2. 함수 호이스팅

  • 코드를 선언과 하당으로 분리해 선언부를 자신의 스코프 최상위로 끌어올리는 것
printHello();
function printHello(){
    console.log("Hello");
}

3. 즉시 실행 함수 사용하기

  • (function(){})();
  • 함수를 정의하면서 동시에 실행까지 하는 함수
(function init(){
    console.log("initialized!");
})();

 

 

'데이터 엔지니어링 과정' 카테고리의 다른 글

[33일차] CSS & 자바스크립트  (0) 2023.02.08
[32일차] CSS  (0) 2023.02.07
[31일차] HTML 필수 태그 & CSS  (0) 2023.02.06
[30일차] HTML로 웹 구조 설계하기  (0) 2023.02.03