문자를 split에 적용되어 있는 인수 기준으로 배열로 쪼개서 데이터로 변환해서 반환. i.e. '문자'를 배열 데이터로 변환
reverse 메소드:
배열을 기본 순서가 아닌 반대의 순서로 뒤집어 주는 역할을 한다.
join 메소드:
배열 데이터를 인수 기준으로 문자들을 하나씩 붙여서 병합해 변환한다.
const a = 'Evelyn!';
const b = a.split('').reverse().join('');
// a 배열 뒤에 메소드+메소드+메소드... 이런 형식을 메소드 체이닝이라고 한다.
console.log(a); // Evelyn!
console.log(b); // !nylevE
CSS 선택자(.box)를 통해 HTML부분에서 특정 요소를 찾아서 그것을 변수 boxEl에 할당한다.
let boxEl = document.querySelector('.box');
console.log(boxEl);
하지만 브라우저가 위에서 아래로 HTML코드를 읽어 내려가는 특성으로
HTML <script> 영역까지 코드를 읽고 콘솔창에 값을 출력하는 오류가 발생된다.
해당 값을 찾을 수 없다고 Null이 뜨게 된다.
여기서 script 코드에 defer를 추가하면 브라우저가 코드를 쭉 읽고 다시 <script>로 올라와서 요청한 값을 확인하여 출력하게 된다. (CSS .box > html class "box"를 가진 div요소를 찾아서 boxEl에 할당이 되어 출력)
<title>Document</title>
<script defer src="./main.js"></script> <!-- defer 추가 -->
콘솔창
DOM API 실행 과정
요소 1개만 검색,찾기를 통한 실행 과정
// HTML 요소(Element) 1개 검색/찾기
const boxEl = document.querySelector('.box');
/*
querySelector: 메소드
('.box'): class 선택자 인수
boxEl: box요소 약자
해당 CSS 선택자를 통해 찾아진 요소 중 가장 먼저 찾은 요소 하나만 반환하는 특징이 있다.
*/
// HTML (boxEl)요소에 메소드 추가 가능
boxEl.addEventListener();
// 명령어 addEventListener 메소드에 인수(Arguments, 데이터X) 추가 가능
boxEl.addEventListener(1,2);
// 1 - 첫 번째 인수_이벤트(Event, 상황)
boxEl.addEventListener('click', 2);
/*
사용자가 boxEl를 클릭했을 때의 상황을 브라우저는 '이벤트'라고 본다.
i.e. 클릭이라는 상황이 일어나면 무언가를 하겠다는 의미로 사용되는 코드이다.
*/
// 2 - 두 번째 인수_핸들러(Handler, 실행할 함수)
boxEl.addEventListener('click', function (){
console.log('click!');
});
/*
두 번째 인수에 익명 함수를 대신 넣어 데이터처럼 활용한다.
i.e. boxEl에 이벤트를 추가할지 듣고 있다가 클릭이 일어나면 익명 함수를 실행시킨다는 의미이다.
*/
let boxEl = document.querySelector('.box');
console.log(boxEl);
boxEl.addEventListener('click', function(){
console.log('Click!'); // 콘솔창에 click! 출력하기
boxEl.classList.add('active');
console.log(
boxEl.classList.contains('active') // 콘솔창에 class active 추가 확인하기
);
boxEl.classList.remove('active');
console.log(
boxEl.classList.contains('active') // 콘솔창에 class active 제거 확인하기
);
});
콘솔창
콘솔창
요소모두검색,찾기를 통한 실행 과정
// HTML 요소(Element) 모두 검색/찾기
const boxEls = document.querySelectorAll('.box');
console.log(boxEls);
// 찾은 요소들 반복해서 익명 함수로 실행
// 여기서 익명 함수를 인수로 추가했다.
boxEls.forEach(function (){});
// 첫 번째 매개변수(boxEl): 반복되는 요소 (이름 지정 가능)
// 두 번째 매개변수(index): 반복되는 번호 (통상적으로 index로 사용)
boxEls.forEach(function (boxEl, index){});
// 콘솔창 출력
boxEls.forEach(function (boxEl, index){
boxEl.classList.add(`other-${index + 1}`);
console.log(index, boxEl);
});
const boxEl = document.querySelector('.box');
// Getter, 값을 얻는 용도
// textContent 라는 속성을 통해 text로 된 내용이 반환되는 것.
console.log(boxEl.textContent); // Box!!
// Setter, 값을 지정하는 용도
// textContent 부분에 1 대신 Evelyn!을 넣겠다(지정하겠다).
boxEl.textContent = 'Evelyn!';
console.log(boxEl.textContent); // Evelyn!!
특징 : - 저장된 변수는 재사용이 가능하다. - let키워드를 통해 변수a를 명시 후 데이터'2'를 집어넣는 행위를 변수 선언 이라고 한다. - 값(데이터) let으로 재할당 가능 (const 재할당 불가) **재할당 용으로 let을 쓰고, 이 외는 const를 사용한다.
let a = 2; // let키워드를 통해 변수a를 명시 후 데이터'2'를 집어넣는다.
let b = 5;
console.log(a+b); // 7
console.log(a-b); // -3
console.log(a*b); // 10
console.log(a/b); // 0.4
a = 5; // 변수의 데이터 재할당 가능!
console.log(a+b); // 10
console.log(a-b); // 0
console.log(a*b); // 25
console.log(a/b); // 1
콘솔창
예약어(Reserves Word)
특별한 의미를 가지로 있어서, 변수와 함수의 이름으로는 사용할 수 없는 특정한 단어을 뜻 함.
let this = 'Hello :)'; // SyntaxError(문법에러) i.e.예약어를 사용하면 안되는데 사용했다는 뜻.
let if = 123; // SyntaxError
let break = true; // SyntaxError
이 처럼 예약이 되어져 있는 단어 (this, if, break)를 사용할 경우 문법에러가 뜨게 된다.
let myName = "Evelyn"; // myName이라는 변수에 "Evelyn"이라는 문자 데이터를 할당 한다.
let email = 'hj5678@gmail.com'; // 작은 따옴표로 표시된 문자 데이터도 동일하게 할당 한다.
let hello = `Helllo ${myName}!!`; // 빽틱 기호로 myName라는 데이터를 보관하겠다는 의미이다. i.e. "Evelyn"이라는 문자가 ${myName}에 들어가는 개념이다.
console.log(myName); // Evelyn
console.log(email); // hj5678@gmail.com
console.log(hello); // Hello Evelyn!!
콘솔창
Number (숫자 데이터)
정수 및 부동 소수점 숫자
let number = 123;
let opacoty = 1.37;
console.log(number); // 123
console.log(opacity); // 1.37
콘솔창
Boolean(불린 데이터)
true, false 값으로 이뤄진 논리 데이터
let checked = true;
let isShow = false;
console.log(checked); // true
console.log(isShow); // false
콘솔창
Undefined
값이 지정되지 않은 상태 (할당되지 않음)
자바스크립트 만의 특이한 문법이다.
let undef;
let obj = { abc: 123 }; // (object의 약어 obj) (숫자 데이터123을 속성abc에 할당한다. => i.e. 데이터의 집합, 객체 데이터라고 한다.)
console.log(undef); // undefined
console.log(obj.abc); // 123 (obj변수 내부로 들어가 abc속성 데이터를 접근하여 그 값이 무엇인가 확인하는 코드)
console.log(obj.xyz); // undifined
콘솔창
Null
어떤 값이 의도적으로 비어있음을 의미
let empty = null; // i.e. 비어있는 값 임을 명시한 것이다.
console.log(empty); // null
콘솔창
Object(객체 데이터)
key: value 형식으로 저장하는 {데이터의 집합}
let user = {
name: 'Evelyn',
age: 22,
isValid: true //boolean 데이터 true가 들어가 있음
};
console.log(user.name); // Evelyn
console.log(user.age); // 22
console.log(user.isValid); // true
콘솔창
Array(배열 데이터)
[데이터를] 순차적으로 저장
let name = ['Kate', 'Daniel', 'Anna'];
console.log(name[0]); // 'Kate'
console.log(name[1]); // 'Daniel'
console.log(name[2]); // 'Anna'