What I Learned from Javascript30 (6~10)
Wes Bos 님의 Vanilla Javascript 강의인 Javascript 30을 따라하며 새롭게 배운 내용들을 정리한 포스트입니다.
6. Type Ahead
RegExp
const re = /ab+c/i; // literal pattern
const re = new RegExp('ab+c', 'i'); // constructor with string pattern
const re = new RegExp(/ab+c/, 'i'); // constructor with literal pattern (ES6 에서 추가)
위 3가지 모두 같은 regex expression object 생성.
i
: 대소문자 무시g
: 글로벌 매치 (첫 매치에서 멈추지 않음)
"ABC".match(/\w/i) // => ["A", index: 0, input: "ABC", groups: undefined]
[..."ABC".matchAll(/\w/gi)]
// => [
["A", index: 0, input: "ABC", groups: undefined],
["B", index: 1, input: "ABC", groups: undefined],
["C", index: 2, input: "ABC", groups: undefined],
]
"ABC".replace(/\w/i,"a") // =>aBC
match()
, matchAll()
, replace()
, 함수에서 사용 가능
7. Array Cardio 2
const people = [
{ name: "Wes", year: 1988 },
{ name: "Kait", year: 1986 },
{ name: "Irv", year: 1970 },
{ name: "Lux", year: 2015 },
];
Array.prototype.some
people.some(({ year }) => new Date().getFullYear() - year >= 19); // => true
배열 안의 어느 한 요소라도 주어진 함수를 통과하는지 확인
Array.prototype.every
people.every(({ year }) => new Date().getFullYear() - year >= 19); // => true
배열 안의 모든 요소가 주어진 함수를 통과하는지 확인
const comments = [
{ text: "Love this!", id: 523423 },
{ text: "Super good", id: 823423 },
{ text: "You are the best", id: 2039842 },
{ text: "Ramen is my fav food ever", id: 123523 },
{ text: "Nice Nice Nice!", id: 542328 },
];
Array.prototype.find
comments.find(({ id }) => id === 823423); // => { text: "Super good", id: 823423 }
주어진 함수를 만족하는 배열안의 첫 원소 리턴
Array.prototype.findIndex
const findIndexByID = comments.findIndex(({ id }) => id === 823423); // => 1
주어진 함수를 만족하는 배열안의 첫 원소의 인덱
Array.prototype.splice
array.splice(startIndex, deleteCount, item1, item2, ...)
comments.splice(findIndexByID, 1);
console.log(comments) // => [
{ text: "Love this!", id: 523423 },
{ text: "You are the best", id: 2039842 },
{ text: "Ramen is my fav food ever", id: 123523 },
{ text: "Nice Nice Nice!", id: 542328 },
]
기존 배열 요소를 삭제하거나 대체하거나 추가.
8. HTML5 Canvas
9. Dev Tools Tricks
Break on Element Change
Console Logging Level
console.log();
console.info();
console.warn();
console.error();
Assert
console.assert([condition], [logging])
Showing DOM Element
const p = document.querySelector("p");
console.log(p) // => <p>innerText</p>
console.dir(p) // => Show all attributes of DOM element as object format
Grouping
console.groupCollapsed(`${dog.name}`);
console.log(`This is ${dog.name}`);
console.log(`${dog.name} is ${dog.age} years old`);
console.log(`${dog.name} is ${dog.age * 7} dog years old`);
console.groupEnd(`${dog.name}`);
Counting
console.count('yhan') // => yhan : 1
console.count('yhan') // => yhan : 2
Timing
console.time("fetching data");
setTimeout(() => console.timeEnd("fetching data"), 1000);
// => fetching data: 1005.619140625 ms
Clearing
console.clear()
10. Shitkey and Checkbox
MouseEvent shiftKey property
Mouse Event 에는 같이 눌린 키보드 정보를 가져올 수 있다.
Mouse Event
{
...
altKey: false,
metaKey: false,
shiftKey: false,
ctrkKey: false,
...
}
Keyboard Event 등에도 똑같이 들어 있다.