[Javascript] 함수

jungmin Lee·2023년 9월 3일
0

함수

함수는 입력(input)을 받아 출력(output)을 하는 하나의 작은 기능 단위이다. 함수는 입력을 받아서 코드블록 내부의 코드를 실행한 후 함수의 실행결과를 반환하는 일련의 과정의 묶음이다.
함수를 사용한다는 것은 특정한 코드실행 과정을 하나의 묶음으로 묶어서 필요할 때마다 호출하여 실행하는 것이다.

함수선언문과 함수표현식

  • 함수선언문
    함수선언문은 변수를 선언하듯 함수 선언 키워드인 function 키워드를 사용하여 함수를 선언하는 방식이다
function greeting () { 
	console.log('hello world') 
};
greeting() // 'hello world'
  • 함수표현식
함수표현식은 변수에 함수를 할당한 것이다.
let greeting = function () {
	console.log('hello world')
};

함수 호출

greeting이라는 함수명을 사용하며, 소괄호(())를 입력한다. 소괄호 안에는 함수 내부에서 사용할 수 있는 매개변수를 사용할 수 있고 실행할 코드를 코드블록({}) 내부에 넣어주면 된다. 함수는 호출되었을 때만 코드블록 내부의 코드가 실행된다.


매개변수와 전달인자

매개변수는 함수를 정의할 때 선언하고, 함수 코드 블록 안에서 변수처럼 취급된다. 함수를 호출할 때 소괄호 안에 값을 넣음으로써 매개변수에 값을 할당할 수 있으며 전달인자라고 한다.
매개변수는 함수 내부에서만 사용이 가능하며, 자신이 선언된 위치에 따라 유효범위가 결정된다. 변수가 유효한 범위를 스코프라고 한다.
함수를 정의할 때 선언한 매개변수보다 함수를 호출할 때 전달한 전달인자가 많아도 오류는 발생하지 않는다. 전달인자는 순서에 따라 매개변수에 전달되므로, 아무것도 전달되지 않은 매개변수는undefined로 초기화된다.

전달인자(argument)가 전달되는 과정
함수 호출 시, 전달인자가 함수의 매개변수로 전달이 된다. console.log('hello ' + name)를 콘솔에 입력하는 경우, 괄호 사이의 값 'hello ' + name이 log 메서드로 전달된다.

function greeting (name) {
	console.log('hello ' + name);
}
greeting('jungmin'); // 'hello jungmin'

✨스코프
스코프는 변수가 접근할 수 있는 범위이다. 한 스코프 범위 내에서 외부 스코프의 변수에는 접근 가능하지만, 내부 스코프의 변수에는 접근이 불가능하다.
var로 선언된 변수는 function scope를 가진다. 특히 for 문의 중괄호는 block scope이고 function scope가 아니므로 for 문의 초기화식에 var를 사용하는 경우, function scope 내에서 var로 선언된 변수가 변경될 수 있다. 이런 가능성을 최대한 배제해야 예측 가능한 코드를 작성할 수 있으므로 var 사용은 주의해야한다.


return문

return문을 만나면 값을 반환한 후 함수는 종료된다. return문에 작성된 코드를 실행한 후 결과를 함수 외부로 리턴한다.

function add (x, y) {
	return x + y; // 반환문
}
profile
Leejungmin

0개의 댓글