JavaScript | TypeScript/Javascript 시작하기
[ Javascript ] 내부 함수
shiro21
2022. 6. 3. 12:06
반응형
내부함수
내부함수는 여러 개발자들과 프로그램을 개발할 때 충돌이 발생하는 것을 막는 방법입니다.
내부함수 형태
function <외부함수>() {
function <내부함수1>() { <코드> }
function <내부함수2>() { <코드> }
<코드>
}
피타고라스의 정리 구현하기
// 제곱을 구하는 함수
function square(x) {
return x * x;
}
// 피타고라스 함수
function pytha(width, height) {
return Math.sqrt(square(width) + square(height));
}
alert(pytha(3, 4)); // 5
밑변과 높이를 매개변수로 받아 빗변의 길이를 리턴합니다.
이름 충돌 예
// 제곱을 구하는 함수
function square(x) {
return x * x;
}
// 피타고라스 함수
function pytha(width, height) {
return Math.sqrt(square(width) + square(height));
}
alert(pytha(3, 4)); // 0
// 삼각형이 직각인지 확인하는 함수
function square(width, height, hypotenuse) {
if(width * width + height + height == hypotenuse * hypotenuse) {
return true;
} else {
return false;
}
}
위에서 만든 square()함수가 아래 square()함수에 덮어씌워지게 되면서 아래 square()를 사용하게 됩니다.
이를 방지하기 위해 다른 이름을 사용할 수도 있지만, 가변 인자 함수로 같은 이름이어도 다른 기능을 수행하게 하여 충돌 예방을 할 수 있습니다.
내부함수 사용 예
// 피타고라스 함수
function pytha(width, height) {
// 제곱을 구하는 함수 (내부함수)
function square(x) {
return x * x;
}
return Math.sqrt(square(width) + square(height));
}
alert(pytha(3, 4)); // 5
// 삼각형이 직각인지 확인하는 함수
function square(width, height, hypotenuse) {
if(width * width + height + height == hypotenuse * hypotenuse) {
return true;
} else {
return false;
}
}
이런식으로 내부함수를 사용하면 함수의 이름충돌을 예방할 수 있습니다. 하지만 반대로 내부함수를 외부에선 사용할 수 없다는 것을 알아두어야 합니다.
:: 내부함수는 내부함수를 포함한 외부함수에서만 사용이 가능합니다. ( 내부함수를 외부에서 개별적으로 사용이 불가능함 )
반응형