(this)는 태그 본인을 의미함
<p onclick="changeText(this)">
비동기식: 중간에 오래걸리는 작업이 있으면 제껴두고 다른거부터 처리하는 방식
동기식: 한 번에 한줄씩 차례대로 실행
<input type="button" onclick="sendit()" value="확인">
------ ------- --------
이벤트타겟 이벤트타입 이벤트리스너
이벤트가 발생했을 때 그 처리를 담당하는 함수
지정된 타입의 이벤트가 특정 요소에서 발생하면 웹 브라우저는 그 요소에 등록된 이벤트리스너를 실행
// 이벤트 등록
객체.addEventListner(이벤트타입, 이벤트리스너);
// 이벤트 제거
객체.removeEventListner(이벤트타입, 이벤트리스너);
특정 타입의 이벤트와 관련이 있는 객체
이벤트 객체는 해당 타입의 이벤트에 대한 상세 정보를 저장하고 있음
모든 이벤트 객체는 이벤트의 타입을 나타내는 type 프로퍼티와 이벤트 대상을 나타내는 target 프로퍼티를 가지고 있음
이벤트 객체는 이벤트 리스너가 호출될 때 인수로 전달됨
function sendit(e){ // e는 이벤트 객체
console.log(e.target); // 이벤트 타겟(button)
console.log(e.type); // 이벤트 타입(onclick)
}
<input type="button" onclick="sendit()" value="완료">
이벤트가 발생했을 때 브라우저가 이벤트 리스너를 실행시킬 대상 요소를 결정하는 과정
document 객체나 HTML 문서의 요소에서 이벤트가 발생하면 대상 요소를 결정하기 위해 이벤트 전파가 일어남
🥙 캡처링 전파방식
부모에서 자식으로 이벤트를 전파
세번째 parameter에 true를 넣으면됨
🍤 버블링 전파방식
자식에서 부모로 이벤트를 전파
🍪 이벤트 전파를 막는 방법
이벤트객체명.stopPropagation();
next()
return()
throw()
throw new Error(에러문);
이터레이터를 좀 더 유연하게 사용할 수 있는 기능
코드의 일시정지 가능, 코드가 실행된 상태가 유지가 되기 때문에 정지된 상태부터 다시 시작할 수 있음
function* 제너레이터명(){
~
yield 리턴값;
}
모든 iterable은 spread가 될 수 있음
순회 가능한 데이터는 펼쳐질 수 있음
func(...iterable)
[..iterable]
{...obj}
/==========
function add(num1, num2, num3){
return num1,num2,num3;
}
add(10,20,30); //일반적인 값
const nums=[10,20,30];
add(nums[0], nums[1],num[2];
add(...nums);
arr1.concat(arr2)
// arr1에 arr2추가
const [값1, 값2, ...others] = 배열명
- 값1, 값2가 객체로 생성되어 배열명.값 호출이 아닌 따로 값으로 호출 가능
const fruits = [ '🍟', '🥠', '🍎', '🍒'];
const [fruit1, fruit2, ...others] = fruits;
// fruit1: 🍟 / fruit2: 🥠 / others: '🍎', '🍒'
const point = [1,2];
const [x,y,z=0] = point;
// x: 1 / y: 2 / z: 0
const 배열명 ={
name: ~,
style: {color: 'black'}};
function 함수명({style:{color},name}){}
// color: black / name: ~
job을 hobby로 변경
const {name, age, pet = '루시', job:hobby} = apple_update;
// pet 프로퍼티 값 추가
const set = new Set(값1,값2,값3,..])
.size: set사이즈 확인
.has(값): set의 값에 동일한 값이 존재하는지 확인
.add(값): 값 추가
.delete(값): 값 삭제
.clear(): 전부 삭제
.forEach(()=>{}): 순회하여 배열값을 순서대로 출력
for(let value of 배열명.values()){}
오브젝트 세트
const obj1 = {name: '사과', emoji: '🍎', price: 1000};
const obj2 = {name: '바나나', emoji: '🍌', price: 2000};
const set2 = new Set([obj1, obj2]);
//Set(2) {
// { name: '사과', emoji: '🍎', price: 1000 },
// { name: '바나나', emoji: '🍌', price: 2000 }
//}
중복 제거
function 함수명(arr){
return [...new Set(arr)];
}
중복값만 담고있는 세트 생성
new Set([...set1].filter((item)=> set2.has(item)))
const map = new Map([
['key1', '🍎'],
['key2', '🍌']
])
.size: set사이즈 확인 [key와 value가 한 쌍]
.has(key값): 동일한 key값이 존재하는지 확인 [boolean 값]
get(key값): 동일한 key값이 존재하는지 확인 후 value값 출력
.set(key값,value값): 필드 추가
.delete(key값): 값 삭제
.clear(): 전부 삭제
.forEach(()=>{}): 순회하여 배열값을 순서대로 출력
map.forEach((value, key) => console.log(key, value));
&&
둘 다 true면 뒤에 항목을 실행
let result = obj1 && obj2; // 둘 다 true면 obj2를 result에 삽입
||
result = obj1 || obj2; // 둘 다 true일 경우 obj1을 result에 삽입
?.
ex) obj && lover && lover.name == obj?.lover?.name
??