Front-end

Javascript DAY 2 ( 배열 실습, 함수, 객체, HTMLElement 함수 실습 [ 가위바위보, 증감 버튼 등 ] )

도키마 2024. 7. 19. 16:41



 

 

 

 

오늘의 노래 추천 🥖

 

 
L’Amour, Les Baguettes, Paris
아티스트
스텔라장 (Stella Jang)
앨범
Stairs
발매일
1970.01.01

 

내 자장가 스텔라장 샹송 계속 내주라 . . .


 

 

 

 

 

 

 

 

 

 

 

 

DAY 2

 

 

 

 

 

 

 

 

 

 

 

 

ㅡ 배열 ( Array ) ㅡ

여러개의 데이터를 한번에 다룰 수 있도록 해주는 자료구조

* 길이가 정해지지 않은 가변길이 이며 자료형 제한이 없음

 

배열 arr

 

변수 선언 키워드 + 배열명 = [ ]

 

자바 배열 사용 방식과 동일

ㅡ> 배열에 숫자, 문자, boolean, 배열, 객체 등의 다양한 자료형 값 초기화 가능

 

.push

 

배열명.push() : 배열의 뒤쪽에 자동으로 추가됨

 

배열

 

배열 재대입 ㅡ> 데이터 수정

splice ( 시작인덱스, 삭제할 개수) ㅡ> 데이터 삭제

includes ( 확인할 데이터 값 ) ㅡ> 특정 데이터가 있는지 확인

indexOf ( 확인할 데이터 값 ) ㅡ> 특정 데이터의 인덱스 번호 확인

slice ㅡ> 배열 자르기

 

 

https://velog.io/@natural_min/JS-array-fn

 

[JS] 배열 관련 함수 정리

: 순서가 있는 리스트, 고유번호(index) 존재: 배열 끝에 추가: 배열 끝 요소 제거: 배열 앞에서 추가: 배열 앞에서 제거unshift & shift는 여러 요소를 한꺼번에 추가 가능일반 for문보다는 간단하지만,

velog.io

 

 

* 배열 예제 실습

 

array fruits
예제 문제


 

예제 풀이 1

 

pop : 배열 마지막 요소 삭제

ㅡ> splice ( 배열명.indexOf ( '삭제할 아이템' ), 1 ) 으로도 삭제가능

push : 배열 마지막에 요소 추가 (여러개 가능)

includes : 요소가 배열에 있는지 확인

 

예제 풀이 2

 

indexOf : 요소의 인덱스 번호 반환

splice : 배열에서 삭제

ㅡ> 인자를 하나만 쓰면 해당 인덱스부터 끝까지 삭제

slice : ~부터 ~까지 잘라내기 ( 재대입 활용 )

 

 

 

 

 

 

 

 

ㅡ 함수 ( function ) ㅡ

독립적으로 설계된 불록으로 호출하여 작업을 수행할 수 있음

* java 의 메서드 형태와 유사

 

 

 

 

* 함수 선언문

function

 

function 함수명 ( 매개변수 ) {

동작 로직

return 반환값

}

 

* 선언된 위치와 상관없이 함수 호이스팅 ( function hosting ) 발생

 

함수 선언문으로 선언된 함수는 html 문서가 해석될 때 최상단으로 끌어올려짐

ㅡ> 경우에 따라 원치 않는 결과가 나올 수도 있음

 

 

 

 

* 함수 표현식

let function

 

함수명이 없는 함수 선언문을 변수에 저장 ㅡ> 함수 표현식

 

자바스크립트의 함수는

값, 데이터로 취급 가능하며 '1급 객체'

 

1급 객체

 

** 1급 객체의 특징 **

1. 변수에 담아 사용하거나 속성값, 배열의 요소 등으로 사용 가능

2. 함수의 매개인자로서 함수를 사용 가능

3. 함수의 리턴값으로 함수 사용 가능

 

미리 정의된 greet을 인수로 전달
show 함수에 익명함수를 전달
리턴 값으로 사용

 

 

 

 

* 화살표 함수

화살표 함수

 

function 을 생략하고 => 를 사용해 함수식 작성 ㅡ> 화살표 함수

 

생략

 

ㅡ> 매개인자나 실행구문이 1개일 경우 괄호 생략 가능

 

리턴값으로 설정

 

 

 

 

* 두 수를 입력받아 더하는 함수 생성 예제

예제 풀이

 

 

 

 

* 이모지와 줄 수를 입력받아 피라미드 그리기 예제

 

피라미드 예제 풀이

 

ㅡ> 이중 for 문을 사용해 피라미드 함수 작성

 

 

 

 

 

 

 

 

ㅡ 객체 ( object ) ㅡ

여러 속성을 하나의 변수에 저장할 수 있는 자료형

* Key/Value 로 저장하는 구조

 

ㅡ> 속성 ( property ) + 메서드 ( method )

* java의 field 와 method

 

 

 

 

ECMA script 객체 구성

 

 

 

 

* 객체 구조

{ key1:value1, key2:value2 . . . }

 

** 객체의 속성에 접근하기 위해서는 객체명.(온점)속성명

 

 

 

 

ㅡ 사용자 정의 객체 ㅡ

Host Object

 

사용자 정의 객체
출력 결과

 

 

 

 

ㅡ 브라우저 객체 모델 ㅡ

Browser Object Model

 

window : 최상위의 브라우저 객체 모델,  브라우저 창을 제어할 수 있는 객체

 

window.open

 

location : 주소 관련 정보를 가진 객체

 

location
출력 결과

 

screen : ( 디스플레이 ) 화면 정보

navigator : 현재 브라우저 정보

history : 브라우저의 이동 관련 정보

 

screen, navigator, history

 



 

ㅡ 문서 객체 모델 ㅡ

Document Object Model

 

* 브라우저 객체 모델의 요소 (Documnet)

html 문서에 정의된 태그를 Javascript 가 이용할 수 있는 객체로 작성

웹 브라우저가 html 문서를 '인식하는 방식'

 

브라우저 랜더링 과정

 

브라우저 랜더링 과정
html 트리구조

 

Tree 구조를 만들고 랜더링하는 과정을 거침

 

 

 

 

 

 

 

 

ㅡ HTMLElement ㅡ

모든 종류의 HTML 요소를 나타내는 인터페이스

* Node Type 중 하나

 

ㅡ> getElement 메서드를 통해 원하는 객체 조회 후 조회된 객체로 구체적 작업

 

 

 

 

실습을 위한 body

 

 

 

 

* html 객체에 접근하는 함수 *

 

getElementById () : id 속성을 가진 HTML 객체를 반환
getElementsByName () : name 속성을 가진 HTML 객체들을 반환
getElementsByClassName () : class 속성을 가진 HTML 객체들을 반환
getElementsByTagName () : tag 이름에 해당하는 HTML 객체들을 반환

 

getElement ㅡ> HTMLElement 객체

getElements ㅡ> HTMLCollection 객체(유사배열)

 

getElement 실습

 

 

 

 

* 접근/변경 관련 속성과 함수 *

 

HTML객체.innerHTML : HTML 객체의 내용 (html, xml, text...)을 접근, 변경, 추가

HTML객체.textContent : HTML 노드 속성으로 텍스트 값을 접근, 변경, 추가

HTML객체.value : input HTML 객체의 텍스트 내용을 접근, 변경

HTML객체.style.property : HTML 객체의 스타일을 접근, 변경

HTML객체.setAttribute : HTML 객체의 속성을 변경

 

innerHTML, innerText 실습


value와 InnerHTML / InnerText 용도 구분

 

addEventListener, alert

 

ㅡ> addEventListener 함수 : 버튼에 'click' 이벤트가 발생할 경우 function 실행 (이벤트리스너)

 

ondbclick

 

' on ~ 속성 '

자바 코드를 실행하기 위한 속성

ㅡ> 따옴표에 실행 구문을 작성해줘야함

 

 

 

 

* 버튼을 클릭하면 h1태그 수정, a태그 생성, ul태그 생성하는 예제

예제 1 문제

 

body
예제 1 풀이

 

getElement 를 이용해 객체를 불러오고

click 이벤트가 발생할 경우 h 태그의 텍스트를 수정하고,

aArea 에 a태그의 내용을 추가하고,

ulArea 에 ul태그의 내용을 추가하는 함수 작성

 

* 단, 편의상 행을 구분해야할 경우 복합대입연산자를 활용할 수 있음

 

 

 


* 버튼을 누르면 숫자가 증가, 감소하는 예제

예제 2 문제

 

body
예제 2 풀이

 

getElement 메서드를 사용해 객체를 불러오고

click 이벤트가 발생할 경우 n 의 값이 증감하는 함수 작성

 

 

 

 

* 가위바위보 박스 예제

 

body
document.getElementById

 

ㅡ> getElementById 로 객체를 불러오고 가위, 바위, 보 배열 생성

 

박스 테두리 색 변경

 

ㅡ> 승패에 따른 테두리 색 변경을 위해 parentElement 로 부모 요소에 접근

setAttribute 를 이용해 class 속성을 변경

 

승패 결정 함수 judge

 

ㅡ> 사용자와 컴퓨터의 결정을 매개변수로 받아 승패를 결정해서 출력하는 함수 judge 생성

* judge 함수 내에서 테두리 색 변경

 

게임 실행 함수 play

 

ㅡ> 랜덤으로 사용자와 컴퓨터의 가위바위보 결과를 결정하고 출력하는 play 함수 생성

* play 함수 내에 judge 함수 호출

 

click 이벤트
결과 출력

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 



 

 

 

 

 

BYE