오답노트

[JS] 호이스팅 (Hoisting) 과 함수 매개변수 본문

Web

[JS] 호이스팅 (Hoisting) 과 함수 매개변수

권멋져 2022. 11. 7. 21:03

함수 정의하는 법

함수는 생성자 함수 방법, 선언적 함수 방법, 리터럴 함수 방법이 있다.

 

var f1 = new Function("x","y","return x+y") // 생성자 함수 방법
console.log(f1(7,5))

function f2(x,y){ // 선언적 함수 방법
	return x+y
}
console.log(f2(7,5))

var f3 = function(x,y){ // 리터럴 함수 방법
	return x+y
}
console.log(f3(7,5))

 

호이스팅 (Hoisting)

인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화한다. 반면 let const로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않는다.

 

console.log(a) // undefined -> 실행시 a를 할당했지만 초기화 되지 않은 상태
var a = 1
console.log(a) // 1
var a = 'a'
console.log(a) // a

 

함수 매개변수

보통 언어에서 함수에서 정한 매개변수는 모두 채워야한다. 하지만 JS는 꼭 그렇지 않아도 실행된다.

 

function func(a,b,c){
	console.log(a)
    console.log(b)
    console.log(c)
}

func(100,200,300) // 100 200 300
func(100) // 100 undefined undefined
func(100,200,300,400,500) // 100 200 300

 

'Web' 카테고리의 다른 글

[Webpack] Webpack이 뭐지..?  (6) 2024.10.21
[JS] 함수 실행과 컨텍스트  (0) 2022.11.07
[JS] JavaScript 타입과 변수  (0) 2022.11.07