FE/Javascipt

[Javascipt] 함수

따봉치치 2023. 7. 18. 16:48
728x90

함수(Fuction)


함수 선언문(Declaration)

function hello() {}

함수 표현식(Expression)

const Hello = function() {}

 

 

호이스팅(Hoisting)


코드 상단에서 선언된 함수를 호출하는 것

함수 선언문으로 작성한 함수는 코드 내 선언부 상단에서 함수를 호이스팅하는 것이 가능하지만 함수 표현식으로 작성된 함수는 불가능하다.

 

나머지 매개변수


function sum(...rest) {
	return rest.reduce(function(acc,cur) { //배열 내 원소들을 더하고 더한 원소는 삭제하는 코드
		return acc + cur
	}, 0
}

sum(1,2) //3
sum(1,2,3,4,5)

javascipt는 모든 매개변수의 정보를 가지고 있는 arguments라는 유사배열(Array-Like)를 가지고 있다.

하지만 배열의 내장 함수를 사용할 수 없기 때문에 보통 사용하지 않음

 

화살표 함수 Arrow Function


const sum = (a,b) => a+b

const b = x => x * x

const a = () => ({ a : 1}) // 객체값을 반환하는 함수라면 리턴을 생략할 때 무조건 소괄호로 감싸주어야 함

 

바로 리턴값을 반환하는 함수라면 함수를 한줄로 작성가능함

매개변수가 하나라면 소괄호를 생략할 수 있다.

 

즉시실행함수 IIFE


(() => {})()
(function () {}) ()
(function () {}())
!function () {} ()
+function () {} ()

익명함수로 함수를 작성하자마자 호출할 수 있는 함수

보통 소괄호 두개를 연속으로 붙이는 패턴으로 사용함

코드의 난독화를 위하여 사용함

 

콜백


const a = (callback) => {
	callback() // 이 부분에서 b 함수가 동작하는 것
}

const b = () => {

}

a(b) // b는 콜백함수

함수가 실행될 때 인수로 들어가는 또 하나의 함수

 

const sum = (a,b,c) => [
	setTimeout(() => { // callback
		c(a+b) //calback
	},1000)
}

sum(1,2,value => {console.log(value)})

 

728x90