JavaScript
20210521 JavaSciprt 06 : 표기법(case), 주석, 데이터 종류, 변수, 예약어, 함수, DOM API, 메소드 체이닝
JavaScript06
JavaScript : 표기법
- dash-case(kebab-case)
- 단어와 단어 사이를 대쉬를 사용(띄어쓰기를 대신해서)
- HTML , CSS에서 많이 사용
- snake_case
- 단어와 단어 사이를 언더바를 사용
- HTML, CSS에서 많이 사용
- camelCase
- 첫글자를 소문자로 하고 그 다음 단어의 첫글자 마다 대문자로 표기
- JS에서 많이 사용
- PascalCase
- 첫글자도 대문자로 하고 그 다음 단어의 첫글자 마다 대문자로 표기
- JS에서 많이 사용(JS에서도 특수한 경우)
- Zero-based Numbering
- 0 기반 번호 매기기
- 특수한 경우를 제외하고 0부터 숫자를 시작
- 요일의 경우 0을 일요일로 표시하여 커짐
JavaScript : 주석
ctrl + /
// 한 줄 메모
/* 한 줄 메모 */
/*
여러줄 1
여러줄
메모1
메모2
*/
JavaScript : 데이터 종류
- JavaScript 는 데이터를 기준으로 사고 해야함.
이름 | 설명 |
---|---|
String (문자 데이터) | 따옴표를 사용 (큰따옴표, 작은 따옴표, 백틱) |
Number (숫자 데이터) | 정수 및 부동소수점 숫자 |
Boolean (불린 데이터) | true, false 두가지 값이 있는 논리 데이터 |
Undefined | 값이 할당되지 않은 상태 예) let undef; |
Null | 어떤 값이 의도적으로 비어있을 의미 (값이 없다는 것을 명시함) |
Object (객체 데이터) | 여러 데이터를 Key: Value 형태로 저장 {} 사용 . 또는 [] 을 통해서 특정 key에 접근 가능 |
Array (배열 데이터) | 여러 데이터를 순차적으로 저장 (쉼표로 구분해서 저장) [] |
JavaScript : 변수
- 데이터를 저장하고 참조(사용)하는 데이터의 이름
- var(최근 쓰지 않음), let, const
- 변수 선언 : 변수명을 명시하고 값을 할당 하는 것
let
: 재할당 가능 (재할당 해야 하는 경우 const 를 let으로 수정하는 방법이 좋음)const
: 재할당 불가능 (대부분 const 사용)
JavaScript : 예약어
- 특별한 의미를 가지고 있어, 변수나 함수 이름 등으로 사용할 수 없는 단어
- this, if, break 등의 어떤 기능을 하는 이름으로 변수명, 함수명 불가
JavaScript : 함수
- 특정 동작 기능을 수행하는 일부 코드들의 집합 (function)
// 함수 선언
function sum(a, b) {
// 매개변수(Parameters) a, b
// 실행(명령) 코드
console.log(`a: ${a}, b: ${b}`);
// 반환 (값을 내보냄)
return a + b;
}
// 함수 호출시 인수를 넣을 수 있음
sum(1, 2); // 1,2 는 인수(Arguments)
// a: 1, b: 2
// 함수 호출시 반환되는 데이터를 변수에 할당
let res = sum(2, 2); // a: 2, b: 2
console.log(res); // 4
- 함수 선언 : function 키워드와 함께 함수명을 명시해서 함수를 만드는 것
- 함수 표현 : function 키워드는 있지만 함수명 없이 익명 함수를 만들때 호출을 위해서, 함수를 변수명에 할당하는 것을 말함
- 메소드(Method) : 객체 데이터의 속성이 함수데이터를 가지는 경우 해당 속성을 메소드라고 부름
JavaScript : DOM API
Document Object Model : HTML 요소들
Application Programming Interface : 동작하기 위한 명령
html script 요소의
defer
: 해당 script 파일을 나중에 다운 받게 우선순위를 낮출 수 있음- html이 먼저 다 읽혀야 요소들을 제어하는 JS 파일이 해당 요소를 인식할 수 있기 때문에
document
: html의 요소들로 구성되어 조작 할수 있게 하는 기반querySelector
: 가장 먼저 찾아진 요소 하나를 반환함addEventListener
: 앞으로의 발생할 상황을 듣고 있음ClassList
: 해당 요소의 여러개의 class를 조작 할수 있게 하는 기반contains()
: classList 확인 함수
// HTML 요소(Element) 1개 검색/찾기
const boxEl = document.querySelector(".box"); // 가장 먼저 찾아진 요소를 반환함
// HTML 요소에 적용할 수 있는 메소드
// 인수 추가 가능
// 첫번째에 넣을 인수 : 이벤트(Event, 상황) -> 청취
// 두번째에 넣을 인수 : 핸들러(Handler, 실행할 함수)
boxEl.addEventListener("click", function () {
console.log("Box was Clicked!");
});
// 요소의 클래스 정보 객체 활용 (ClassList)
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
querySelectorAll
: 해당 조건에 만족하는 요소들 모두를 배열로 반환forEach
: 위의 배열 데이터를 loop하기 좋음
// HTML 요소 모두 검색/ 찾기
const boxEls = document.querySelectorAll(".box");
console.log(boxEls);
// NodeList(4) [div.box, div.box, div.box, div.box]
// 찾은 요소들 반복해서 함수 실행!
// 익명 함수를 인수로 추가
boxEls.forEach(function (boxEl, index) {
boxEl.classList.add(`order-${index + 1}`);
console.log(index, boxEl);
});
// 0 <div class="box order-1">1</div>
// 1 <div class="box order-2">2</div>
// 2 <div class="box order-3">3</div>
// 3 <div class="box order-4">4</div>
textContent
: 값을 얻거나 지정하는 용도 (Getter, Setter), 공백 포함innerText
: 값을 얻거나 지정하는 용도, 표시되는 화면 그대로 text를 가져옴 (공백이 제거 되기 떄문에)
const boxEl = document.querySelector(".box");
// Getter 값을 얻는 용도
console.log(boxEl.textContent); // box
// Setter 값을 지정하는 용도
boxEl.textContent = "this textContent was Updated";
console.log(boxEl.textContent); // this textContent was Updated
textContent vs innerText
- innerText는 불필요한 공백을 제거해서 가져옴 (즉, 일반적으로 페이지에 표시되는 모양대로)
- textContent는 수정한 값 있는 그대로 가져옴
- html에서 일반적으로 표시할때 그냥 space는 무시됨
boxEl.textContent = " this textContent was Updated ";
console.log(boxEl.innerText); // this textContent was Updated
console.log(boxEl.textContent); // this textContent was Updated
JavaScript : 메소드 체이닝
split
: 문자를 첫번째 인수(구분자) 기준으로 쪼개서 배열로 반환reverse
: 배열 뒤집기join
: 배열을 첫번째 인수(구분자) 기준으로 문자로 병합해 반환return type과 받는 type이 같아야 메소드 체이닝이 가능함
String.split(): string[]
Array<string>.reverse(): string[]
:Array<string>.join(separator?: string): string
const a = "Hi~";
const b = a.split("").reverse().join("");
console.log(a); // Hi~
console.log(b); // ~iH