JavaScript를 더 깊게 공부하고자 "모던 자바스크립트 Deep Dive"를 읽으며 공부하고 있습니다. 그리고 각 파트를 상세히 기록하며 정리할 예정인데 그 전에 기본적인 것들을 전체적으로 정리할 예정입니다. 드루아 시리즈는 각 언어나 개념들의 전체를 훑으며 그 흐름을 이해하는 데 도움이 되고자 작성하는 시리즈입니다. 잘 부탁드립니당 :)

 

해당 글은 코딩앙마의 자바스크립트 강좌를 기반으로 작성되었습니다. 

 

변수

먼저 변수를 선언하는 과정에서 지켜야 하는 것들이 있는데요. 이는 다음과 같습니다.

  1. 변수는 문자, 숫자, $, _만 사용
  2. 첫글자에 숫자는 올 수 없음
  3. 예약어 사용 불가
  4. 상수는 보통 대문자로 작성
  5. 읽기 쉽고, 이해 가능하게 작성

그리고 이러한 변수는 var, let, const 총 3가지를 통해 선언할 수 있습니다. 각각의 차이점을 알기 위해선 호이스팅이란 개념에 대해 이해해야 합니다.

 

호이스팅이란 코드를 실행하기 전에 함수, 변수, 클래스나 import 선언문을 최상단 스코프로 끌어올리는 것처럼 보이는 현상입니다. 이렇게 보이는 이유는 JS는 코드를 실행하기 전에 선언된 변수와 함수 등을 먼저 체크하기 때문입니다.

 

이제 var, let, const의 차이점에 대해 알아봅시다.

 

var

  • 호이스팅 시 변수의 선언과 초기화를 같이 실행 , 그렇기에 var는 선언하기 전에 사용힐 수 있습니다.(undefined로 초기화 되기 때문에 선언 전에 사용하면 undefined을 가져옵니다.)
  • 함수 스코프 : 함수를 기준으로만 어휘적 환경이 설정 (전역변수와 지역변수의 경계 모호)
  • 재할당 재선언 가능

let

  • 호이스팅이 일어나지만 초기화되지는 않습니다.
  • 블록 스코프 : 블록{}을 기준으로 어휘적 환경이 설정 (전역변수와 지역변수의 경계 확실)
  • TDZ(Temporal Death Zone) 적용 : 호이스팅이 됐지만 초기화 전까지는 해당 변수에 접근 불가
  • 위의 이유로 선언하기 전에는 사용 불가
  • 재할당만 가능

const

  • let과 모두 동일하지만 선언, 초기화, 할당이 동시에 일어나기 때문에 
  • 재선언 재할당 불가능 

선언 : 변수를 JS 엔진에 알려줌

초기화 : 선언된 변수에 기본 값을 할당(변수를 메모리에 등록하고 초기값 할당) 즉, 선언 후 첫 번째 값을 할당할 때 발생

할당 : 초기화 이후의 값 변경

 

 

생성자 함수 

JS에서는 객체를 자주 유용하게 사용합니다. 그렇기에 비슷한 객체를 여러개 만들어야 하는 상황이 생기고, 이 때 사용하는 것이 생성자 함수입니다.

객체 선언 방식은 모두 아시죠?

const user = {
	name: '홍길동',
    age: 34,
    nick_name: '동번서번',
}

위와 같은 객체를 여러개 만들어야 할 경우에 생성자 함수를 사용하는 데 보통 첫글자는 대문자로 작성합니다. 예시로 작성한 객체를 만들어낼 수 있는 생성자 함수를 작성해 보겠습니다.

function User(name, age, nick_name) {
	this.name = name;
    this.age = age;
    this.nickName = nick_name;
}

이러한 생성자 함수를 이용해 새로운 객체를 생성할려면 앞에 new를 붙여서 함수에 필요한 파라미터를 작성해야 합니다.

const hong = new User('홍길동', 34, '동번서번');
const zeon = new User('전우치', 27, '어디보자');

 

이러한 생성자 함수가 객체를 생성할 때는 보이지는 않지만, 내부에서 this에 빈 객체를 할당하고 this에 객체를 생성하기 위해 필요한 프로퍼티를 추가합니다. 그리고 this를 반환해 주는 방식으로 생성합니다.

 

그리고 원하는 메소드(프로퍼티의 값이 함수일 경우)를 추가할 수 있고, 생성된 모든 객체는 추가한 메소드를 불러올 수 있습니다. 예제를 보면서 확실하게 이해해 봅시다.

// 생성자 함수 정의
function User(name, age, nick_name) {
	this.name = name;
    this.age = age;
    this.nickName = nick_name;
    this.callName = function(){
    	console.log(this.name);
    }
    this.callNickName = function(){
    	console.log(this.nickName);
    }
}

// 객체 생성하기
const lee = new User('이순신', 77, '사즉생 생즉사');

// 함수 호출
lee.callName(); // '이순신'
lee.callNickName(); // '사즉생 생즉사'

 

 

Computed property

객체를 선언할 때, [] 안에 계산된 프로퍼티를 넣을 수 있습니다. 이를 computed property(계산된 프로퍼티)라고 합니다.

const user = {
	[4 + 5] : 9,
    ["내 이름은" + "00"] : "당동",
}

// user -> {9: 9, 내 이름은00: "당동"}

 

객체 메소드

객체에서 자주 사용하는 메소드들에 대해 알아봅시다.

 

- Object.assign()

객체를 복제하고 병합할 수 있습니다.

// 객체 복제
Object.assign({}, 객체);

// 객체 병합
Object.assign(객체, 객체1, 객체2);

객체 병합에 대한 예제를 보며 확실하게 이해해 봅시다.

 

const user = {
	name: '이름1',
    age: 33,
}
const info1 = {
	nickName: "이름아름",
}
const info2 = {
	gender: 'male',
}

const newUser = Object.assign(user, info1, info2);

// newUser
// {
// 	name: "이름1",
// 	age: 33,
// 	nickName: "이름아름",
// 	gender: "male",
// }

만약에 병합 과정에서 같은 키를 가진 프로퍼티가 있다면 초기값의 객체가 병합하는 객체에 덮어써집니다.

 

- Object.keys()

키를 배열로 반환합니다.

 

- Object.values()

값을 배열로 반환합니다.

 

- Object.entries()

[키, 값]을 가진 배열을 반환합니다.

 

- Object.fromEntries()

배열 형태로 변경된 객체를 다기 객체로 만들어줍니다.

const arr = [
	["키1", "값1"],
    ["키2", "값2"],
    ["키3", "값3"]
]

const arrToobj = Object.fromEntries(arr);

// arrToobj
// {
//	키1 : "값1",
//    키2 : "값2",
//    키3 : "값3",
//  }

 

 

'웹 풀스택 공부 과정 정리 > HTML, CSS, JS' 카테고리의 다른 글

[HTML] 드루아 ver.1.1.0  (0) 2023.08.23

일단은 HTML부터 하나하나 복습하면서 정리하는 것이라 포스코X코딩온 KDT에서 배웠던 핵심 개념만 짚고 넘어가면서 쭉 정리해보고자 한다. 추후에 책과 자료들을 읽으며 내용을 더 보충할 예정이다. 그때 사용할 자료를 미리 올려놓자면,

HTML : https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/HTML_basics 

 

HTML 기본 - Web 개발 학습하기 | MDN

HTML (Hypertext Markup Language)은 웹 페이지와 그 내용을 구조화하기 위해 사용하는 코드입니다. 예를 들면, 콘텐츠는 여러 개의 문단, 글 머리 목록이 구조화된 것이거나 사진이나 데이터 테이블일 수

developer.mozilla.org

CSS : https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/CSS_basics

 

CSS 기초 - Web 개발 학습하기 | MDN

CSS (Cascading Style Sheets)는 웹페이지를 꾸미려고 작성하는 코드입니다. CSS 기초 에서 여러분이 처음 시작하며 필요한 내용을 익히도록 도와드립니다. 저희는 다음과 같은 질문에 관한 답을 드리겠

developer.mozilla.org

이들을 사용할 것이다. 지금은 강의에서 사용한 자료를 기반으로 정리와 지금까지 해왔던 실습을 정리해본다.


HTML이란?

Hypertext Markup Language를 축약해서 적은 것이며, 마크업 언어는 태그를 이용하여 구조화 하는 언어를 말한다.

기본적으로 웹페이지를 제작하기 위해서 HTML, CSS, JS를 필수적으로 알고 써야하며 이를 집을 짓는 과정에 빗대어 설명하자면, 아래와 같이 설명할 수 있다.

HTML : 집의 구조 

CSS : 인테리어

JS : 집의 기능

<기본요소 privew>

 

<!DOCTYPE html> 선언

 HTML5의 문서는 반드시 맨 처음에  <!DOCTYPE html>를 선언하고 시작을 해야한다. 이는 선언된 페이지의 HTML 버전이 무엇인지를 웹 브라우저에 알려주는 역할을 하는 선언문으로, 대소문자를 구분하지 않는다. 이를 선언하는 이유는 HTML의 버전별로 사용되는 태그와 사용되지 않는 태그가 있다. 구버전에서 신버전의 HTML 태그를 사용한다면, 문법오류가 나기 때문에 위의 선언을 통해 웹이 각 버전에 맞게 문법을 검사할 수 있도록 알려주는 것이다.

 

HTML의 구조와 기본 문법

실질적인 HTML 문서는 두 번째 행부터 시작된다고 할 수 있다. HTML의 구조는 모두를 포함하는 <html> 태그 안의 두 구조로 나눌 수 있는데, 문서의 정보와 메타데이터(제목, 저장 방식, 브라우저의 크기 등)를 정의하는 <head></head>태그와 웹 브라우저에 출력되는 모든 요소를 다루는 <body></body>로 나눌 수 있다.

 

▶ <head> 태그

HTML 문서의 메타데이터(데이터에 대한 정보를 저장하고 알려주는 데이터)와 정보를 저장

아래의 데이터를 다루고 화면에 표시되지 않는다.

• title : HTML 문서의 제목

• style : HTML 문서의 Style 정보 정의

• link : 외부 리소스와의 연결 정보를 정의(CSS 파일 연계에 사용)

• script : Javascript 를 정의

• meta : 페이지 설명, 키워드, 저자, 화면 크기 등의 정보. 주로 브라우저 또는 검색 엔 진에서 사용 

 

▶<body> 태그

HTML 문서의 실제 콘텐츠를 정의하는 데 사용되고, 다양한 태그를 통해 웹페이지의 구조를 설계할 수 있다.

 

- 요소(Element)와 중첩

HTML의 기본 구조는 시작태그와 종료태그가 있고 그 사이의 내용으로 구성된다. 이렇게 태그로 만들어진 구성을 요소(Element)라고 한다. 이들은 중첩을 통해 부모요소와 자식요소, 상위요소와 하위요소로 나눌 수 있다.

 

- 빈요소(Empty)

내용이 없고 속성만 있는 요소이다.

<br> : 줄바꿈

<hr> : 구분선

<img> : 이미지 불러오기

<input> : 타입 지정을 통해 다양한 기능으로 사용가능(input 속성 설명 페이지 따로 작성할 예정)

<link> : css 연결이나 리소스 연결

<meta> : HTML 문서에 대한 정보

 EX) <meta charset="utf-8">
 : 웹 페이지의 문자 인코딩 방식을 utf-8로 지정해라.

등이 존재한다.

 

 - 속성(Attribute)

요소의 성질과 특성을 정의하고, 추가적인 정보(예를 들어 이미지 파일의 경로, 크기 등)를 제공 한다.

 

 

HTML 태그의 종류

기본적으로 사용하는 태그를 알아보자

태그 이름 기능 및 특징
제목 태그, <h1~6></h1~6> - heading의 약자
- 자동 줄바꿈
- 하나의 HTML 문서에는 하나의 h1 태그를 권장
- 웹 엔진이 제일 먼저 검색함
본문 태그, <p></p> - paragraph의 약자
줄바꿈 태그, <br> / 수평 줄, <hr> - 줄을 바꿔줌
- 수평줄을 만들어준다.
목록 태그, <ul></ul> or <ol></ol> - ul : 순서가 없는 목록
앞에 표시되는 ● 없애는 법 > list-style: none;

- ol : 순서가 있는 목록
<ol type= '지정 숫자로 순서 표시'> 
1: 숫자
a/ A : 영어 소문자/ 대문자
i/ I : 로마숫자 소문자/ 대문자
<ol start ="시작할 숫자 지정">
<ol reveresd> 역순으로 표시
리스트, <li> <ul>과<ol>의 각 항목을 나열할 때, 사용한다.

내부에서 중첩도 가능하다.

이미지 태그,
<img src = "이미지 경로" alt="사진 출력 안될시 텍스트 표시">
거의 동일하게 오디오 파일을 첨부하는 audio 태그도 있음.
<audio src = "이미지 경로" alt = "위와 동일">
- 이미지 주소를 가져와 웹사이트에서 불러오거나 파일에 넣은 후 이미지를 표시한다.
- inline 태그이다.
하이퍼링크, <a href='연결할 링크의 경로'> 내용 </a> - 웹 페이지를 연결하거나 외부 사이트에 연결을 해준다.
- 폴더 내에서 웹페이지를 이동할 때에도 사용할 수 있다.

href (이동하고자 하는 파일의 경로를 받는다.)

target(새창이나 새탭에서 연결을할 때 사용한다.)

title (커서를 올렸을때 나오는 설명을 적을 수 있다.)
id (같은 페이지 안에서 이동할 때 사용 각 div의 id를 이용)
<=> href = "#아이디이름"
입력값 받기!, <input> - 속성을 통해 다양한 방식으로 입력값을 받을 수 있다.
type 종류 [ • button(버튼 생성)/ • text(텍스트 값 입력)/
• password(입력값 안보이게 변경)/ • checkbox(여러개 체크 가능 name으로 묶을 수 있다.)/ • radio(하나만 선택 가능)/ • date/ • color/ • range/ • file]
\선택 메뉴 만들기, <select> <select> : select 폼 생성

<option> : select 폼의 옵션 값 생성 
- value : 실제적으로 전달 되는 값
- selected : 최초에 선택 된 값으로 설정

<optgroup>: option 을 그룹화
label : optgroup 이름 설정
disabled : 옵션은 보이지만 선택을 못하도록 설정



table 태그


table 속성
• border : 테두리 두께
• cellspacing : 테두리 간격 사이의 너비
• cellpadding : 셀 내부의 간격
• align : 테이블 정렬 속성
• width 와 height : 테이블의 너비와 높이
• bgcolor 와 bordercolor : 테이블 배경색과, 테두리 색

공간은 점유하는 colspan(행)과 rowspan(열)

테이블의 각 영역(header, body, footer)을 명시하는
thead / tbody / tfoot 요소 
웹에 직접 표시되는 것은 아니지만 영역을 나누어 구분해준다.

    <table border="1px">
        <thead>
            <tr>
                <th>분식 메뉴</th>
                <th>금액</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>떡볶이</td>
                <td>4500</td>
            </tr>
            <tr>
                <td>순대</td>
                <td>4500</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td>총 합계</td>
                <td>9000</td>
            </tr>
        </tfoot>
    </table>




form 태그 form 전송을 다룰 때 더 자세히 설명 
<추후 링크 추가>


▶ html 실습

1. 설문 조사 폼 만들기

 

 

2. colspan과 rowspan을 이용하여 아래와 같은 표 만들기

 

3. 아래 표 만들기

 

+ Recent posts