웹 프론트엔드 개발의 핵심 줄기를 학습
- 비트맵( Bitmap)
- 픽셀이 모여 만들어진 정보의 집합, 레스터(Raster) 이미지라고도 부름.
- 정교하고 다양한 색상을 자연스럽게 표현
- 확대/축소 시 계단 현상, 품질 저하.
- 예) .jpg, .png
- 벡터(Vector)
- 점, 선, 면의 위치(좌표), 색상 등 수학적 정보의 형태로(Shape)로 이루어진 이미지.
- 확대/축소에서 자유로움, 용량 변화가 없음.
- 정교한 이미지(인물, 풍경 사진 같은)를 표현하기 어려움.
- 예) .svg
` : 백틱, 그레이브
~ : 틸드, 물결 표시
! : 엑스클러메이션, 느낌표
@ : 앳, 골뱅이
# : 샵, 넘버, 우물 정
$ : 달러
% : 퍼센트
^ : 캐럿
& : 엠퍼센드
* : 에스터리스크, 별표
- : 하이픈, 대시, 마이너스
_ : 언더스코어, 로대시, 밑줄
= : 이퀄, 동등
" : 쿼데이션, 큰 따옴표
' : 아포스트로피, 작은 따옴표
: : 콜론
; : 세미콜론
, : 콤마, 쉼표
. : 피리어드, 닷, 점, 마침표
? : 퀘스천, 물음표
/ : 슬래시
| : 버티컬 바
\ : 백슬래쉬, 역슬래쉬
( ) : 퍼렌서시스, 소괄호, 괄호
{ } : 브레이스, 중괄호
[ ] : 브래킷, 대괄호
< >: 앵글 브래킷, 꺽쇠괄호
- 어떤 제품을 개발하는 과정에 필요한 소스 코드나 설계도를, 누구나 접근해서 열람 할 수 있도록 공개하는 것.
- 구글 검색창에 vscode 입력 > Visual Studio Code Editing. Redefined 클릭
- 자신에 맞는 운영체제를 선택하고 다운로드
- 바탕화면에 폴더 하나 생성
- Ctrl +, - 로 화면 확대, 축소 가능
- 단축키 (맥 커맨드 키 = 윈도우 컨트롤 키)
- Shift + Ctrl + P : 메뉴 검색 - Ctrl + O : 파일 혹은 폴더 열기
- 맨 아래 상태바
- 보라색 : 프로젝트(폴더/ 디렉토리)가 열려있지 않다. - 파란색 : 프로젝트(폴더/ 디렉토리)가 열렸다.
- 파일 아이콘 클릭
- 파일 이름 입력 ( !!소문자 : index.html)
- ! 엔터 or 탭 > html 구조가 완성 됨
- 파일 아이콘 클릭
- 파일 이름 입력 ( main.css)
- main.css 우클릭 > delete > Move to Trash : 파일 삭제 됨
- 사이드바 옆 엑티비티 바에서 확장 프로그램 아이콘 클릭
- 검색창에 korean 검색 > Korean Language ~~ 클릭 > Install 클릭 > 재부팅 Yes 클릭
- 확장 프로그램 > beautify 검색 > 첫번째 설치
- 기능기여도 탭 선택 > HookyQR.beautify 드래그
- Shift + Ctrl + P > 바로 가기 키 열기 > HookyQR.beautify 더블 클릭 > Alt + Ctrl + L 엔터
- 지저분한 코드 드래그 > Alt + Ctrl + L > 코드 정리 됨
- 확장 프로그램 > auto 검색 > 첫번째 설치
- 앞 태그를 바꾸면 뒷 태그도 바뀜
- Ctrl + Alt + S : 모든 변경사항 저장
- 확장 프로그램 > liver server > 첫번째 설치
- 오른쪽 하단 파란색 상태바에 Go Live가 생김
- 저장한 파일에 우클릭 > Open with Live Server 클릭
- Ctrl + B : 사이드 바 열기/닫기 - Ctrl + P : 빠른 열기(파일이나 기호 탐색) - Ctrl + Shift + P : 모든 명령 표시(에디터의 모든 명령에 접근) - Ctrl + W : 편집기 닫기 - Ctrl + F : 찾기(검색) - Ctrl + H : 찾기(검색)/바꾸기(대체) - Alt + Up : 줄 위로 이동 - Alt + Down : 줄 아래로 이동 - Alt + Shift + Down : 아래에 줄 복사 - Ctrl + Z : 되돌리기 - Alt + Shift + Up : 위에 줄 복사 - Tab : 들여쓰기(Indent) - Ctrl + Page Up : 이전 편집기 열기(좌측 창으로 전환) - Ctrl + Page Down : 다음 편집기 열기(우측 창으로 전환) - Ctrl + \ : 편집기 분할
- 아래 파란색 상태바에 공백 클릭 > 공백 숫자 2 클릭
- Ctrl + A > Ctrl + Alt + L > 모든 공백이 2로 바뀜
[index.html]
<html lang="ko">
<head>
<link rel="stylesheet" href="./main.css">
<script src="./main.js"></script>
</head>
<body>
<div>Hello world!</div>
</body>
</html>
[main.css]
div {
color: red;
font-size: 100px;
}
[main.js]
console.log('HEROPY!');
<title> </title>
- HTML 문서의 제목(title)을 정의.
- 웹 브라우저 탭에 표시됨.
<link rel="stylesheet" href="./main.css" />
- 외부문서를 가져와 연결할 때 사용.(대부분 CSS 파일)
- rel : 가져올 문저와 관계.
- href : 가져올 문서의 경로.
<link rel="icon" href="./favicon.png">
- 페이지의 대표로 사용하는 아이콘 설정.
<style> </style>
- 스타일(CSS)를 HTML 문서 안에서 작성하는 경우에
<script src="./main.js"></script>
- 자바스크립트(JS) 파일 가져오는 경우
<script>
console.log('Hello world!')
</script>
- 자바스크립트(JS)를 HTML 문서 안에서 작성하는 경우.
<meta />
- HTML 문서(웹페이지)의 제작자, 내용, 키워드 같은, 여러 정보를 검색엔진이나 브라우저에게 제공.
- charset : 문자인코딩 방식
- name : 정보의 종류
- content : 정보의 값
1. 이미지 저장 > 프로젝트 파일에 넣기
2. images 폴더 생성 > 저장한 이미지 넣기
3. index.html
<body>
<img src="./images/logo.png" alt="대체 텍스트">
</body>
4. 이미지 주소 복사
5. index.html
<body>
<img src="이미지 주소 붙여넣기" alt="대체 텍스트">
</body>
- ./(생략가능) : 현재 위치
- ../ : 상위 폴더
- http(https) : 원격
- / (//) : 루트, 최상위 경로
1)
1. index.html
<body>
<a href="https://naver.com">NAVER</a>
</body>
2. NAVER 홈페이지로 이동
2)
1. about 폴더 생성 > about 파일 생성
2. about.html
<body>
About!!
</body>
3. index.html
<body>
<a href="/about/about.html">About</a>
</body>
4. about.html으로 이동
3)
1. about.html > about.index 이름바꾸기
2. index.html
<body>
<a href="/about">About</a>
</body>
3. about.html으로 이동
4)
1. about.html
<body>
<a href="/">Home</a>
</body>
2. index.html으로 이동
- Ctrl + Shift + P > 설정 > tab size > 2 입력
- F12 > Elements 탭 선택
Codepen.io > start coding 클릭
- 저장을 원하면 가입 후 이용
1. 검색창에 reset.css cdn > www.jsdeliver.com 제공 reset.css cdn 클릭
2. /reset.min.css > Copy to Clipboard > copy html
3. index.html
<head>
<link rel="stylesheet" href="cp html 붙여넣기">
</head>
(+) Codepen.io에서 초기화
- CSS 톱니바퀴 > CSS Base > Reset 체크
- div.heropy + 탭 => <div class="heropy"></div>
- w:100 + 탭 => width: 100px;
- h:200 + 탭 => height: 200px;
- bc:orange => background-color: orange;
- div>ul>li*2{$} + 탭
=> <div>
<ul>
<li>1</li>
<li>2</li>
</ul>
</div>
- <태그>내용</태그>: 요소(Element)
- <태그>: 시작(열린) 태그(Tag)
- </태그>: 종료(닫힌) 태그
- 내용: 요소의 내용(Contents)
1)
<태그>: 부모 요소
<태그>내용</태그>: 자식 요소
</태그>
- 들여쓰기: Tab 키
- 내어쓰기: Shift + Tab 키
2)
<태그>: 상위(조상) 요소
<태그>: 부모 요소, 상위(조상) 요소
<태그>내용</태그>
</태그>
</태그>
3)
<태그>
<태그>: 자식 요소, 하위(후손) 요소
<태그>내용</태그>: 하위(후손) 요소
</태그>
</태그>
- <태그>: 편리함, HTML 1/2/3/4/5
- <태그/>: 안전함, XHTML/ HTML5
- <img src=" " alt=" " />
- <input type=" " />
1) 인라인(Inline) 요소:
- <span></span>: 대표적인 인라인 요소! 본질적으로 아무것도 나타내지 않는, 콘텐츠 영역을 설정하는 용도.
- 글자를 만들기 위한 요소들.
- 요소가 수평으로 쌓임.
- 포함한 콘텐츠 크기만큼 자동으로 줄어듬.
- 가로(width), 세로(height) 사이즈를 지정할 수 없다.
- 내부 여백(padding), 외부 여백(margin)은 좌, 우 사이즈만 지정할 수 있다.
- <span><div></div></span>: 불가!
- <span><span></span></sapn>: 가능!
2) 블록(Block) 요소: 상자(레이아웃)를 만들기 위한 요소들.
- <div></div>: 대표적인 블록 요소! 본질적으로 아무것도 나타내지 않는, 콘텐츠 영역을 설정하는 용도.
- 요소가 수직으로 쌓임.
- 가로 너비는 부모 요소의 크기만큼 자동으로 늘어남!
- 세로 너비는 포함한 콘텐츠 크기만큼 자동으로 줄어듬!
- 가로(width), 세로(height) 사이즈를 지정할 수 있다.
- 내부 여백(padding), 외부 여백(margin)은 상, 하, 좌, 우 사이즈를 지정할 수 있다.
- <div><div></div></div>: 가능!
- <div><span></span></div>: 가능!
- <div>: 블록 요소, 특별한 의미가 없는 구분을 위한 요소. (Division)
- <h1>~<h6>: 블록 요소, 제목을 의미하는 요소, 숫자가 작을수록 더 중요한 제목을 정의. (Heading)
- <p>: 블록 요소, 문장을 의미하는 요소. (Paragraph)
- <img>: 인라인 요소, 이미지를 삽입하는 요소. (Image)
- <ul>: 블록 요소, 순서가 필요없는 목록의 집합을 의미. (Unordered List)
- <li>: 블록 요소, 목록 내 각 항목. (List Item)
- <a>: 인라인 요소, 다른/같은 페이지로 이동하는 하이퍼링크를 지정하는 요소. (Anchor)
- <span>: 인라인 요소, 특별한 의미가 없는 구분을 위한 요소.
- <br/>: 인라인 요소, 줄바꿈 요소. (Break)
- <input>: 인라인 요소 + 블록 요소, 사용자가 데이터를 입력하는 요소.
- <table>: 테이블 요소, 표 요소, 행(Row)과 열(Column)의 집합.
- <tr>: 행(Row)을 지정하는 요소. (Table Row)
- <td>: 열(Column)을 지정하는 요소. (Table Data)
<!-- 주석 -->
{ 속성: 값; }
/* 주석 */
<style></style>
의 내용으로 스타일을 작성하는 방식<link />
로 외부 CSS 문서를 가져와서 연결하는 방식(병렬 연결)@import
: CSS의 @import
규칙으로 CSS 문서 안에서 또 다른 CSS 문서를 가져와 연결하는 방식(직렬 연결 )*
: 전체 선택자, 모든 요소를 선택.ABC
: 태그 선택자, 태그 이름이 ABC인 요소 선택..ABC
: 클래스 선택자, HTML class 속성의 값이 ABC인 요소 선택.#ABC
: 아이디 선택자, HTML id 속성의 값이 ABC인 요소 선택. ABCXYZ
일치 선택자: 선택자 ABC
와 XYZ
를 동시에 만족하는 요소 선택.ABC > XY
자식 선택자: 선택자 ABC
의 자식 요소 XYZ
선택.ABC XYZ
하위(후손) 선택자: 선택자 ABC
의 하위 요소 XYZ
선택. '띄어쓰기'가 선택자의 기호!ABC + XYZ
인접 형제 선택자: 선택자 ABC
의 다음 형제 요소 XYZ
하나를 선택.ABC ~ XYZ
일반 형제 선택자: 선택자 ABC
의 다음 형제 요소 XYZ
모두를 선택. ABC:hover
가상 클래스 선택자: 선택자 ABX
요소에 마우스 커서가 올라가 있는 동안 선택.ABC:active
가상 클래스 선택자: 선택자 ABC
요소에 마우스를 클릭하고 있는 동안 선택.ABC:focus
가상 클래스 선택자: 선택자 ABC
요소가 포커스되면 선택.focus
가 가능한 요소가 아닐때는 해당 요소에 tabindex="-1"
을 입력해 준다. ABC:first-child
가상 클래스 선택자: 선택자 ABC
가 형제 요소 중 첫째라면 선택.ABC:last-child
가상 클래스 선택자: 선택자 ABC
가 형제 요소 중 막내라면 선택.ABC:nth-child(n)
가상 클래스 선택자: 선택자 ABC
가 형제 요소 중(n)째라면 선택.ABC:not(XYZ)
부정 선택자: 선택자 XYZ
가 아닌 ABC
요소 선택. ABC::before
가상 요소 선택자: 선택자 ABC
요소의 내부 앞에 내용을 삽입.ABC::after
가상 요소 선택자: 선택자 ABC
요소의 내부 뒤에 내용을 삽입. [ABC]
속성 선택자: 속성 ABC
을 포함한 요소 선택.[ABC="XYZ"]
속성 선택자: 속성 ABC
을 포함하고 값이 XYZ
인 요소 선택. font-style
: 글자 기울기font-weight
: 글자 두께font-size
: 글자 크기inherit;
- 우선순위: 같은 요소가 여러 선언의 대상이 된 경우, 어떤 선언의 CSS 속성을 우선 적용할지 결정하는 방법.
- 점수가 높은 선언이 우선함!
- 점수가 같으면, 가장 마지막에 해석된 선언이 우선함!
!important
: 9999999999점(무한대)인라인 선언
: 1000점ID 선택자
: 100점Class 선택자
: 10점태그 선택자
: 1점전체 선택자
: 0점상속
: x 연습) 정답은 드래그로 확인!!
.list li.item { }
: 클래스 + 태그 + 클래스 = 10 + 1 + 10 = 21점 .list li:hover { }
: 클래스 +태그 + 클래스 = 10 + 1 + 10 = 21점 .box::before { }
: 클래스 + 태그(요소) = 10 + 1 = 11점#submit span { }
: 아이디 + 태그 = 100 + 1 = 101점header .menu li:nth-child(2) { }
: 태그 + 클래스 + 태그 + 클래스 = 1 + 10 + 1 + 10 = 22점h1 { }
: 태그 = 1점:not(.box) { }
: 클래스 = 10점 (!!부정 클래스는 점수가 없다.)px
: 픽셀%
: 상대적 백분율em
: 요소의 글꼴 크기rem
: 루트 요소(html)의 글꼴 크기vw
: 뷰포트 가로 너비의 백분율vh
: 뷰포트 세로 너비의 백분율- margin: (top, bottom, left, right);
- margin: (top, bottom) (left, right);
- margin: (top) (left, right) (bottom);
- margin: (top) (right) (bottom) (left);
- padding: (top, bottom, left, right);
- padding: (top, bottom) (left, right);
- padding: (top) (left, right) (bottom);
- padding: (top) (right) (bottom) (left);
- border: 요소의 테두리 선을 지정하는 단축 속성, 요소의 크기가 커짐
- border: 선-두께(border-width) 선-종류(border-style) 선-색상(border-color);
- border-width: (top, bottom, left, right);
- border-width: (top, bottom) (left, right);
- border-width: (top) (left, right) (bottom);
- border-width: (top) (right) (bottom) (left);
- border-style: (top, bottom, left, right);
- border-style: (top, bottom) (left, right);
- border-style: (top) (left, right) (bottom);
- border-style: (top) (right) (bottom) (left);
- border-color: (top, bottom, left, right);
- border-color: (top, bottom) (left, right);
- border-color: (top) (left, right) (bottom);
- border-color: (top) (right) (bottom) (left);
border-radius: 요소의 모서리를 둥글게 깎음
- 0: 기본값, 둥글게 없음
- 단위: px, em, vw 등 단위로 지정
border-radius: 0 10px 0 0; (시계 방향)
- display: 요소의 화면 출력(보여짐) 특성
: 요소의 위치 지정 기준
: 어떤 요소가 사용자와 더 가깝게 있는지(위에 쌓이는지) 결정
- z-index: 요소의 쌓임 정도를 지정
- auto: 부모 요소와 동일한 쌓임 정도(기본값)
- 숫자: 숫자가 높을 수록 위에 쌓임
- position 속성의 값으로 absolute, fixed가 지정된 요소는, display 속성이 block으로 변경됨.
: Flex Container의 화면 출력(보여짐) 특성
: 주 축을 설정
: Flex Items 묶음(줄 바꿈) 여부
: 주 축의 정렬 방법
: 교차 축의 여러 줄 정렬 방법
: 교차 축의 한 줄 정렬 방법
: Flex Item의 순서
: Flex Item의 증가 너비 비율
: Flex Item의 감소 너비 비율
: Flex Item의 공간 배분 전 기본 너비
: 속성명 지속시간(필수 포함 속성!) 타이밍함수 대기시간;
: 전환 효과를 사용할 속성 이름을 지정
: 전환 효과의 지속시간을 지정
: 전환 효과의 타이밍(Easing) 함수를 지정
: 전환 효과가 몇 초 뒤에 시작할지 대기시간을 지정
- transform: 요소의 변환 효과
- transform: 변환함수1 변환함수2 변환함수3 ... ;
- transform: 원근법 이동 크기 회전 기울임;
- perspective: 600px;
- 적용 대상: 관찰 대상의 부모
- 기준점 설정: perspective-origin
- transform: perspective(600px)
- 적용 대상: 관찰 대상
- 기준점 설정: transform-origin
- dash-case(kebab-case)
- HTML, CSS
- the-quick-brown
- snake_case
- HTML, CSS
- the_quick_brown
- camelCase
- JS
- theQuickBrown
- ParcelCase
- JS
- TheQuickBrown
// 주석
/* 주석 */
/**
* 주석
* 주석
* 주석
*/
: 따옴표를 사용합니다.
let myName = "HEROPY";
console.log(myName); // HEROPY
: 정수 및 부동소수점 숫자를 나타냅니다.
let number = 123;
console.log(number); // 123
: true, false 두 가지 값밖에 없는 논리 데이터입니다.
let checked = true;
let isShow = false;
console.log(checked); // true
console.log(isShow); // false
: 값이 할당되지 않은 상태를 나타냅니다.
let undef;
let obj = { abc: 123 };
console.log(undef); // undefined
console.log(obj.abc); // 123
console.log(obj.xyz); // undefined
: 어떤 값이 의도적으로 비어있음을 의미합니다.
let empty = null;
console.log(empty); // null
: 여러 데이터를 Key:Value 형태로 저장합니다. { }
let user = {
// Key: Value,
name: 'HEROPY',
age: 85,
isValid: true
};
console.log(user.name); // HEROPY
console.log(user.age); // 85
console.log(user.isValid); // true
: 여러 데이터를 순차적으로 저장합니다. [ ]
let fruits = ['Apple', 'Banana', 'Cherry']
console.log(fruits[0]); // 'Apple'
console.log(fruits[1]); // 'Banana'
console.log(fruits[2]); // 'Cherry'
변수: 데이터를 저장하고 참조(사용)하는 데이터의 이름
- var, let, const
// 재사용이 가능!
// 변수 선언!
let a = 2;
let b = 5;
console.log(a + b); // 7
console.log(a - b); // -3
// 값(데이터)의 재할당 가능!
let a = 12;
console.log(a); // 12
a = 999;
console.log(a); // 999
// 값(데이터)의 재할당 불가!
const a = 12;
console.log(a); / 12
a = 999;
console.log(a); // TypeError
예약어: 특별한 의미를 가지고 있어, 변수나 함수 이름 등으로 사용할 수 없는 단어
- Reserved Word
let this = 'Hello'; // SyntaxError
let if = 123; // SyntaxError
let break = 'true'; // SyntaxError
- 특정 동작(기능)을 수행하는 일부 코드의 집합(구분)
- function
// 함수 선언
function helloFunc() {
// 실행 코드
console.log(1234);
}
//함수 호출
helloFunc(); // 1234
function returnFunc() {
return 123;
}
let a = returnFunc();
console.log(a); // 123
// 함수 선언!
function sum(a, b) { // a와 b는 매개변수(Parameters)
return a + b;
}
// 재사용!
let a = sum(1, 2); // 1과 2는 인수(Arguments)
let a = sum(7, 12);
let a = sum(2, 4);
console.log(a, b, c); // 3, 19, 6
// 기명(이름이 있는) 함수
// 함수 선언!
function hello() {
console.log('Hello~');
}
// 익명(이름이 없는) 함수
// 함수 표현!
let world = function () {
console.log('World~');
}
// 함수 호출!
hello(); // Hello~
world(); // World~
//객체 데이터
const heropy = {
name: 'HEROPY',
age: 85,
// 메소드(Method)
getName: function () {
return this.name;
}
};
const hisName = heropy.getName();
console.log(hisName); // HEROPY
// 혹은
console.log(heropy.getName()); // HEROPY
- 조건의 결과(truthy, falsy)에 따라 다른 코드를 실행하는 구문
- if, else
let isShow = true;
let checked = false;
if (isShow) {
console.log('Show!'); // Show!
}
if (checked) {
console.log('Checked!');
}
let isShow = true;
if (isShow) {
console.log('Show!');
} else {
console.log('Hide?');
}
(Document Object Model, Application Programming Interface)
1)
//HTML 요소(Element) 1개 검색/찾기
const boxEl = document.querySelector('.box');
// HTML 요소에 적용할 수 있는 메소드!
boxEl.addEventListener(1, 2);
// 인수(Arguments)를 추가 가능!
boxEl.addEventListener(1, 2);
// 1 - 이벤트(Event, 상황)
boxEl.addEventListener('click', 2);
// 2 - 핸들러(Handler, 실행할 함수)
boxEl.addEventListener('click', function () {
console.log('Click~!');
});
2)
// HTML 요소(Element) 검색/찾기
const boxEl = document.querySelector('.box');
// 요소의 클래스 정보 객체 활용!
boxEl.classList.add('active');
let isContains = boxEl.classList.contains('active');
console.log(isContains); // true
boxEl.classList.remove('active');
isContains = boxEl.classList.contains('active');
console.log(isContains); // false
3)
// HTML 요소(Element) 모두 검색/찾기
const boxEls = document.querySelectorAll('.box');
console.log(boxEls);
// 찾은 요소들 반복해서 함수 실행!
// 익명 함수를 인수로 추가!
boxEls.forEach(function () {});
// 첫 번째 매개변수(boxEl): 반복 중인 요소
// 두 번째 매개변수(index): 반복 중인 번호
boxEls.forEach(function (boxEl, index) {});
// 출력!
boxEls.forEach(function (boxEl, index) {
boxEl.classList.add(`order-${index + 1}`);
console.log(index, boxEl);
});
4)
const boxEl = document.querySelector('.box');
// Getter, 값을 얻는 용도
console.log(boxEl.textContent); // Box!!
// Setter, 값을 지정하는 용도
boxEl.textContent = 'HEROPY?!';
console.log(boxEl.textContent); // HEROPY?!
(Method Chaining)
const a = 'Hello~';
// split: 문자를 인수 기준으로 쪼개서 배열로 반환.
// reverse: 배열을 뒤집기.
// join: 배열을 인수 기준으로 문자로 병합해 반환.
const b = a.split(' ').reverse().join(' '); // 메소드 체이닝...
console.log(a); // Hello~
console.log(b); // ~olleH
정답은 드래그해서 확인!!
Q1. The quick brown fox
위 문장을 camelCase(낙타 표기법)로 작성하시오!
A. theQuickBrownFox
Q2. let fruits = ['Apple', 'Banana', 'Cherry'];
위 데이터를 활용해 'Banana'를 콘솔 출력하시오!
A. console.log(fruits[1]);
Q3. 불린 데이터(Boolean)에서 거짓을 의미하는 데이터는?
A. false
Q4. '값이 의도적으로 비어있음'을 의미하는 데이터는?
A. null
Q5. { } 위 데이터의 종류는?
A. Object(객체 데이터)
Q6. let obj = {abc: 123}; console.log(obj.xyz);
위 코드를 통해 콘솔 출력될 값(데이터)은ㅁ?
A. undefined
Q7. 값(데이터)을 제할당할 수 없는 변수 선언 키워드는?
A. const
Q8. 함수에서 값(데이터)을 반환하기 위해 사용하는 키워드는?
A. return
Q9. sum(2, 4);
위 함수 호출에서 2, 4를 무엇이라 하는가?
A. 인자/인수(Arguments)
Q10. fuction sum(a, b) { return a + b; }
위 함수 선언의 a, b와 같이 함수 호출에서 전달받은 인수를 함수 내부로 전달하기 위한 변수를 무엇이라 하는가?
A. 매게변수(Parameters)
Q11. 이름이 없는 함수를 무엇이라 하는가?
A. 익명 함수(Anonymous Function)
Q12. hello 이름의 함수 표현을 작성하고 호출하시오!
A. const hello = function () { };
hello();
Q13. const user = { getName: function () { } }
위 코드의 getName과 같이, 함수가 할당된 객체 데이터의 속성(Property)을 무엇이라 하는가?
A. 메소드(Method)
Q14. 조건이 참(true)인 조건문을 작성하시오!
A. if (true) { }
Q15. 가져온 JS 파일을 HTML 문서 분석 이후에 실행하도록 지시하는 HTML 속성(Attribute)은?
A. defer
Q16. <div class="box">Box!!</div>
위 HTML 요소의 내용(Content)을 콘솔 출력하시오!
A. const boxEl = document.querySelector('.box');
console.log(boxEl.textContent);
Q17. 값(데이터)을 재할당할 목적의 변수 선언 키워드는?
A. let
Q18. const boxEl = document.querySelector('.box');
위 코드의 boxEl 요소에 클릭(Click) 이벤트를 추가해, 클릭 시 'Hello~'를 콘솔 출력하시오!
A. boxEl.addEventListener('click', function () {
console.log('Hello~');
});
Q19. <div>1</div div>2</div>
위 2개의 DIV 요소에 JS로 class="hello"를 추가하시오!
A. const divEls = document.querySelectorAll('.box');
divEls.forEach(function (divEl) {
divEl.classList.add('hello');
});
Q20. 'HEROPY'.split(' ').reverse( ).join(' ');
위와 같이, 메소드를 이어 작성하는 방법을 무엇이라 하는가?
A. 메소드 체이닝(Method Chaining)
Q21. const boxEl = document.querySelector('.box');
위 코드의 boxEl 요소에 HTML 클래스 속성의 값으로 'active'가 포함되어 있으면, '포함됨!'을 콘솔 출력하시오!
A. if (boxEl.classList.contains('active')) {
console.log('포함됨!');
}