다양한 함수의 종류와 함수의 호이스팅에 대해 정리해보자
const doubleArrow = x => ({name: 'Sharon'})
-예시1-
const doubleArrow = function (x, y) {
return x + y
}
-> 화살표 함수로 바꾸기
const doubleArrow = (x, y) => (x+y) * 2
console.log(doubleArrow(1,2)) // 6
-예시2-
const doubleArrow1 = function (x) {
console.log(x ** 2)
}
-> 화살표 함수로 바꾸기
const doubleArrow2 = x => console.log(x**2)
console.log(doubleArrow2(8)) // 64
const a = 7
function double() {
console.log(a * 2)
}
double() // 14
-예시2)
const a = 7
(function () {
console.log(a * 2)
} ()); //14
(function () {
console.log(a * 2)
}) (); //14
setTimeout(function () {
console.log('Sharon!'}, 3000)
> 3초 뒤에 콘솔에 'Sharon!'이 찍힌다
> setTimeout 안의 함수를 화살표 함수로 작성해본다
const timer = setTimeout( () => {console.log('Sharon!')}, 3000)
const h1El = document.querySelector('h1')
h1El.addEventListener('click', () => {
clearTimeout(timer)
})
* clearTimeout(종료할 function을 인수로 적는다)
> 이렇게 되면 3초 안에 h1 태그를 누르면
'Shron!'이 콘솔에 안 찍힌다
function timeout() {
setTimeout( () => {
console.log('Heropy!')}, 3000)
timeout()
console.log('Done!')
** setTimeout()이 동작한 후(console.log('Heropy!')) 출력 후에
console.log('Done!')가 꼭 찍히게 하고 싶을 때, 콜백함수의 개념을 사용한다
function timeout() {
setTimeout( () => {
console.log('Heropy!')}, 3000)
timeout( () => {
console.log('Done!)})
> timeout()의 인수로 화살표함수를 사용한 것이다(콜백함수)
> 이 인수를 받아줄 매개변수가 원래의 함수에 필요하다
function timeout(callback) {
setTimeout( () => {
console.log('Heropy!')
callback() : 내가 실행을 보장하고 싶은 위치에 넣는다
}, 3000)
timeout( () => {
console.log('Done!)})
-예시1-
const a = 7
double()
const double = function () {
console.log(a * 2)
}
> TypeError 발생