티스토리 뷰
반응형
자바스크립트에서 함수의 존재는 아주 자유롭다. -_- 훨훨~
표현 및 호출이 제약이 거의 없다고 생각한다. 심지어 함수명 따윈 필요치 않다. 아래예제를 보자.
var square = function(number) {return number * number};
sqaure 라는 변수가 가리키는 것은 데이터가 아닌 바로 함수이다. 이름없는 함수를 가르키고 있다.
square 라는 변수를 어떻게 사용해야 원하는 결과를 얻을 수 있을까.
console.log(square(5)); // 25 라고 출력된다.
console.log 는 로그 출력하는 함수일 뿐이다. 이와같이 함수를 호출하듯이 파라메터를 넣으면 결과를 리턴받을 것이고 그것을 출력하면 된다. 함수명과 다를바가 없다. 하지만 이건 지역변수 선언하듯 선언한 것이므로 로직이 끝나면 결국 가비지컬렉터가 수거해 갈 것이다.
재귀함수시에는 어떻게 할까. 내부적으로 자기자신을 계속호출해야하므로 fac 라는 함수명을 명시해서 사용하고 있다.
// 익명함수(anonymous)를 사용한 경우 var factorial = function fac(n) {return n<2 ? 1 : n*fac(n-1)}; console.log(factorial(3)); // 일반적인 경우. 조건절이 조금 다르지만 위와 같은 표현이라고 보면 된다. function factorial(n){ if ((n == 0) || (n == 1)) return 1; else return (n * factorial(n - 1)); } var a, b, c, d, e; a = factorial(1); // a gets the value 1 b = factorial(2); // b gets the value 2 c = factorial(3); // c gets the value 6 d = factorial(4); // d gets the value 24 e = factorial(5); // e gets the value 120
인자값으로 함수자체를 받아 사용하는 경우도 있다. 조금씩 어려워진다.
function map(f,a) { var result = [], // Create a new Array i; for (i = 0; i != a.length; i++) result[i] = f(a[i]); return result; } map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]); // returns [0, 1, 8, 125, 1000]
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- python
- docker
- 이클립스
- javascript
- ggplot
- heroku
- 알뜰요금제
- ggplot2
- ipTIME
- Oracle
- ktm모바일
- Google Chart Tools
- 셀프개통
- SVN
- eclipse
- 도넛차트
- MyBatis
- 자급제폰
- 맥북
- R
- vagrant
- Spring
- 마인크래프트
- github
- 아이맥
- MongoDB
- 막대그래프
- java
- MySQL
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함