[인프런 워밍업 클럽] FE 0기 Day 2 👣
#1 자바스크립트 기초 Console 객체아무 전역 객체에서나 접근 가능 var, let, const함수 선언문 호이스팅 : 올바른 출력변수 생성시,재할당 필요 X ⇒ const 사용재할당 필요 O ⇒ scope를 최대한 좁게 만들어 let 사용 자바스크립트 타입원시 타입 : 고정된 크기로 Call Stack 메모리에 저장, 실제 데이터가 변수에 할당참조 타입 : 데이터 크기가 정해지지 X, Call Stack 메모리에 저장, 데이터의 값이 heap에 저장되며 변수에 heap 메모리의 주소값이 할당원시 타입과 참조 타입으로 나뉨, JS는 동적 타입이다. 자바스크립트 타입 변환JS 함수 사용ex) String(2) ⇒ ‘2’, 2.toString() ⇒ ‘2’JS 자체에 의해 자동으로ex) string + number = string 자바스크립트 연산 및 Math Object+, -, *, /, %Math Object Template literalsbacktick(`)을 사용해 문자열 표현줄 바꿈 쉽게 가능문자열 내부에 표현식 포함 가능Loopsforfor/in주로 객체를 순회할 때 사용for/ofiterable(반복 가능한) 객체의 요소들을 순회할 때 사용whiledo/while코드 한번 실행 후 조건문을 통과for, forEach, mapforEach ⇒ break X#2 Window 객체, DOMWindow Object브라우저의 객체브라우저 창 정보 알 수 있고, 창 제어 가능var 키워드로 변수 선언 or 함수 선언 시 window 객체의 프로퍼티가 됨 DOM이란?Document Object Model메모리에 웹 페이지 문서 구조를 트리구조로 표현해서 웹 페이지가 HTML 페이지를 인식하게 해줌CRP(Critical Rendering Path)? 웹 페이지 빌드 과정 Document Object 사용해보기window 객체 ⇒ 브라우저 창document 객체 ⇒ 브라우저 내에서 콘텐츠를 보여주는 웹 페이지 자체// 하나의 요소에 접근 document.getElementById('요소아이디') // 파라미터로 전달한 ID를 가진 태그를 반환 document.getElementsByName('name속성값') // 파라미터로 전달한 name 속성을 가진 태그를 반환 document.querySelector('선택자') // 파라미터로 전달한 선택자에 맞는 첫 번째 태그를 반환 // 여러 요소에 접근 document.getElementsByTagName('태그이름') // 파라미터로 전달한 태그이름을 가진 모든 태그들을 반환(배열) document.getElementsByClassName('클래스이름') // 파라미터로 전달한 클래스 이름을 가진 모든 태그들을 반환(배열) document.querySelectorAll('선택자') // 파라미터로 전달한 선택지에 맞는 모든 태그들을 반환(배열) innerHTML : html까지 포함innerText : 사용자에게 보여지는 텍스트, 여러 공백을 무시하고 하나의 공백만 처리textContent: (display:none)이 적용된 텍스트도 보여줌 DOM 탐색하기자식 노드 탐색하기 (childNodes, firstChild, lastChild)val = list.childNodes : line-break(text)도 나타남배열같아 보이지만, 배열 아님배열로 표현 ⇒ Array.from(list.childNodes)// nodeType // 1 : Element // 2 : Attribute (deprecated) // 3 : Text node // 8 : Comment // 9 : Document itself // 10 : Doctype val = list.firstChild : list.firstChild === list.childNodes[0]val = list.firstElementChild : textNode 포함 X CreateElementdocument.createElement('태그이름')document.querySelector('상위 태그').appendChild('새로만든 태그') removeChild & replaceChildparentNode.removeChild(node) : 삭제parentNode.replaceChild(newChild, oldChild) : 교체 #3 EventEvent Listener & Event 객체Event Listener : 이벤트 발생 시 호출하는 함수자바스크립트 코드에 프로퍼티로 등록HTML 태그에 속성으로 등록addEventListener 메소드를 사용 Event 종류UI 이벤트load, change, resize, scroll, error키보드 이벤트keydown, keyup, keypress마우스 이벤트click, dblclick, mousedown, mouseout, mouseover, mousemove, mouseup포커스 이벤트focus, blur폼 이벤트input / textarea, change, select, reset, submit, cut/copy/paste Event Bubbling아래에서 위로 이벤트 전달event.stopPropagation() : 버블링 중단event.target : 실제 이벤트 타깃 요소this(event.currentTarget) : ‘현재’ 요소로, 현재 실행 중인 핸들러가 할당된 요소 Event Capturing위에서 아래 요소로 이벤트가 내려오는 것이벤트의 3단계 흐름캡처링 단계 : 이벤트가 하위 요소로 전파되는 단계타깃 단계 : 이벤트가 실제 타깃 요소에 전달되는 단계버블링 단계 : 이벤트가 상위 요소로 전파되는 단계코드 흐름 확인elem.addEventListener("click",(e) => alert(캡쳐링: ${elem.tagName}),true);→ 캡처링(true!!)elem.addEventListener("click",(e) => alert(캡쳐링: ${elem.tagName}));→ 버블링 Event Delegation하위 요소의 이벤트를 상위 요소에 위임하는 것즉, 하위요소의 이벤트를 상위에서 제어