“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
혼란합니다. 점점 어려워지고 있는 자바스크립트...함수공부
이번엔 보충이 필요한 함수유형에 대해 공부해 보려고 합니다.
/ 01. 함수와 매개변수를 이용한 함수유형
✈함수는 프로그래밍에서 매우 중요한 개념 중 하나이며, 일반적으로 어떤 입력값을 받아 처리를 수행한 후 결과를 반환하는 기능을 수행합니다. 이때 함수를 사용할 때 매개변수(parameter)를 이용하여 함수에 필요한 입력값을 전달합니다.
함수와 매개변수를 이용하여 다양한 함수 유형을 만들 수 있습니다.
- 인자 없는 함수 (Function without arguments) : 입력값이 없는 함수로, 함수 내부에서 정의된 코드를 실행하고 결과를 반환합니다.
- 인자 있는 함수 (Function with arguments) : 함수 호출 시에 매개변수로 입력값을 전달받아, 함수 내부에서 해당 입력값을 처리하고 결과를 반환합니다.
- 반환값 없는 함수 (Function without return value) : 함수 내부에서 처리된 결과를 반환하지 않고, 다른 동작을 수행합니다.
- 반환값 있는 함수 (Function with return value) : 함수 내부에서 처리된 결과를 반환하고, 해당 결과를 변수에 저장하거나 다른 함수의 인자로 사용할 수 있습니다.
- 내장 함수 (Built-in function) : 언어 자체에서 제공하는 함수로, 별도의 함수 정의 없이 사용할 수 있습니다.
- 사용자 정의 함수 (User-defined function) : 개발자가 직접 함수를 정의하여 사용하는 함수로, 함수의 이름, 매개변수, 반환값 등을 개발자가 정의합니다.
- 재귀 함수 (Recursive function) : 함수 내부에서 자신을 다시 호출하는 함수로, 반복문을 사용할 수 없는 경우에 유용하게 사용됩니다.
- 콜백 함수 (Callback function) : 함수를 인자로 받아 해당 함수가 실행될 때마다 호출되는 함수로, 비동기 처리를 구현할 때 유용하게 사용됩니다.
- 익명 함수 (Anonymous function) : 함수의 이름을 정의하지 않고 함수 자체를 변수에 할당하여 사용하는 함수로, 일회성으로 사용되는 함수에 유용합니다.
- 고차 함수 (Higher-order function) : 함수를 인자로 받거나 함수를 반환하는 함수로, 함수의 재사용성과 코드의 간결성을 높일 수 있습니다.
/ 02. 배열을 이용한 함수유형
✈이 유형의 함수들은 배열을 이용하여 데이터를 저장하고 처리하는 데에 유용합니다. 또한, 배열을 이용하면 다양한 데이터 구조를 만들 수 있어서 복잡한 문제를 해결하는 데에도 유용합니다.
함수와 배열을 이용한 함수유형에는 여러 가지가 있지만, 대표적으로 다음과 같은 유형이 있습니다.
1. 매개변수로 배열을 받아 처리하는 함수: 배열을 인자로 전달받아 그 배열을 이용하여 작업을 수행하는 함수입니다. 예를 들어, 배열의 원소를 모두 더하는 함수는 다음과 같이 정의될 수 있습니다.
def sum_array(arr):
sum = 0
for i in range(len(arr)):
sum += arr[i]
return sum
2. 반환값으로 배열을 반환하는 함수: 함수 내부에서 처리한 결과를 배열로 반환하는 함수입니다. 예를 들어, 1부터 n까지의 자연수를 담은 배열을 반환하는 함수는 다음과 같이 정의될 수 있습니다.
def make_array(n):
arr = []
for i in range(1, n+1):
arr.append(i)
return arr
3. 배열을 이용한 상태를 가지는 함수: 함수 내부에서 처리한 결과를 배열로 저장하고 이를 다음 함수 호출에 사용하는 함수입니다. 예를 들어, 이전 함수 호출에서 생성한 배열에 새로운 원소를 추가하는 함수는 다음과 같이 정의될 수 있습니다.
def add_element(arr, elem):
arr.append(elem)
/03. 함수와 배열, 객체를 이용한 함수 유형
함수와 배열, 객체를 이용한 함수유형에는 다양한 유형이 있지만, 대표적으로 다음과 같은 유형이 있습니다.
1. 배열을 인자로 받는 함수: 배열을 인자로 받아 해당 배열의 요소들을 이용하여 작업하는 함수입니다. 예를 들어, 배열의 합을 구하는 함수는 다음과 같이 정의될 수 있습니다.
def array_sum(arr):
result = 0
for element in arr:
result += element
return result
- 배열을 반환하는 함수: 배열을 반환하는 함수입니다. 예를 들어, 1부터 n까지의 자연수를 담은 배열을 반환하는 함수는 다음과 같이 정의될 수 있습니다.
def get_natural_numbers(n):
return [i for i in range(1, n+1)]
- 객체를 인자로 받는 함수: 객체를 인자로 받아 해당 객체의 프로퍼티를 이용하여 작업하는 함수입니다. 예를 들어, 객체의 합을 구하는 함수는 다음과 같이 정의될 수 있습니다.
def object_sum(obj):
result = 0
for key in obj:
result += obj[key]
return result
- 객체를 반환하는 함수: 객체를 반환하는 함수입니다. 예를 들어, 이름과 나이를 담은 객체를 반환하는 함수는 다음과 같이 정의될 수 있습니다.
def get_person(name, age):
return {'name': name, 'age': age}
수업시간 예제
function func(num, str1, str2){
document.write(num +"."+str1+"가"+str2+"되었습니다."+"<br>");
}
const info = [
{
num: 1,
name: "함수",
word: "실행"
},
{
num: 2,
name: "자바스크립트",
word: "실행"
},
{
num: 3,
name: "리액트",
word: "실행"
}
]
func(info[0].num, info[0].name, info[0].word)
func(info[1].num, info[1].name, info[1].word)
func(info[2].num, info[2].name, info[2].word)
/04. 객체 안에 함수를 이용한 형태의 함수유형
✈객체 안에 함수를 이용한 형태를 객체 지향 프로그래밍에서는 메서드(Method)라고 부릅니다. 메서드는 객체의 특정 기능을 수행하기 위해 객체 내부에 정의된 함수입니다. 객체 지향 프로그래밍에서는 객체와 그 객체의 행동(메서드)를 하나의 단위로 묶어서 프로그래밍하는 개념입니다.
예를 들어, 사각형 객체를 생성하고 사각형의 넓이를 계산하는 메서드를 구현해보겠습니다.
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def get_area(self):
return self.width * self.height
위 코드에서는 Rectangle이라는 클래스를 정의하고, __init__ 메서드를 이용하여 사각형의 가로와 세로 길이를 인스턴스 변수로 저장합니다. 그리고 get_area 메서드를 이용하여 사각형의 넓이를 계산합니다.
이제 사각형 객체를 생성하고 메서드를 호출해보겠습니다.
rect = Rectangle(10, 20)
area = rect.get_area()
print(area) # 200 출력
위 코드에서는 Rectangle 클래스를 이용하여 rect 객체를 생성합니다. 이후 get_area 메서드를 호출하여 사각형의 넓이를 계산하고, 그 값을 출력합니다.
수업시간 예제
const info = {
num1 : 1,
name1 : "함수",
num2: 2,
name2: "자바스크립트",
num3 : 3,
name3: "리액트",
word: "실행",
result1 : function(){
document.write(info.num1 +"."+info.name1+"가"+info.word+"되었습니다."+"<br>");
},
result2 : function(){
document.write(info.num2 +"."+info.name2+"가"+info.word+"되었습니다."+"<br>");
},
result3 : function(){
document.write(info.num3 +"."+info.name3+"가"+info.word+"되었습니다."+"<br>");
}
}
info.result1();
info.result2();
info.result3();
🔊객체 안에 함수를 이용한 형태는 객체 지향 프로그래밍에서 가장 핵심적인 개념 중 하나입니다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있으며, 객체의 특성과 행동을 하나의 단위로 묶어서 프로그래밍할 수 있습니다.