-
javascript::함수 본문
#####함수####
1. 함수 생성법
함수 :
여느 언어에서의 함수와 같은 기능을 함.
그 이외에도 모듈화 처리, 클로저, 객체 생성 등 자바스크립트의 근간이 되는 많은 기능 제공.
자바스크립트에서는 함수도 일반 객체처럼 값으로 취급됨(일급객체)
리턴값과 매개변수로 넘기는 값에 변수타입을 기술하지 않는다.
** 함수 리터럴
함수 선언문이나 함수 표현식 모두 이런 함수 리터럴 방식으로 함수를 생성함.
함수리터럴은 function 키워드로 시작한다.
a. 함수 선언문 방식
반드시 함수명이 정의되어 있어야 한다.
1 2 3 4 5 6 | //add 함수 선언문 function add(x, y) { return x + y; } console.log(add(3, 4)); //(출력값) 7 | cs |
함수명(add)이 있고, 이 함수ㅜ명으로 함수를 호출
b. 함수 표현식 방식으로 함수 생성.
함수를 생성해서 변수에 담을 수 있다.(함수도 하나의 값처럼 취급되기 때문에)
이러한 방식으로 함수 리터럴 방식으로 함수 리터럴로 하나의함수를 만들고, 여기서 생성된 함수를 변수에 할당하여 함수를 생성하는 방식
1 2 3 4 5 6 7 8 9 | //add 함수 선언문 var add = function (x, y) { return x + y; } var plus = add; console.log(add(3, 4)); //(출력값) 7 console.log(add(5, 6)); //(출력값) 11 | cs |
add는 함수 리터럴로 생성한 함수를 참조하는 변수. 함수 이름이 아님.
위의 예제에서는 리터럴로 생성한 함수에 이름이 없다.(익명함수)
add는 함수의 참조값을 가지므로, 또 다른 변수 plus에도 그 값을 그대로 할당할 수 있다.
1 2 3 4 5 6 7 8 9 10 | var fatorilVar = function factorial (n){ if(n <= 1){ return 1; } return n*factorial(n-1); }; console.log(factorialVar(3)); //(출력값) 6 console.log(factorial(3)); //(출력값) undefined | cs |
함수 표현식에서 사용된 함수 이름은 정의된 함수 내부에서 해당 함수를 재귀적으로 호출하거나, 디버거 등에서 함수를 구분할 때 사용된다.
c. Function() 생성자 함수
js의 함수도 Function이라는 기본 내장 생성자 함수로부터 생성된 객체이다.
리터럴 방식으로 생성한 함수 선언문이나 함수 표현식 방식도 내부적으로는 Function ㅅㅇ성자함수로 함수가 생성된다고 볼 수 있다.
1 2 | var add = new Function('x', 'y', 'return x + y'); console.log(add(3, 4)); //(출력값) 7 | cs |
d. 함수 호이스팅
생성 방식에 따라 약간씩 동작이 달라짐. 그 중 하나가 함수 호이스팅
함수 표현식만을 사용할 것이 권장됨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //함수 선언문 add(2, 3); // 5 function add(x, y){ return x + y; } add(3, 4) // 7 //함수 표현식 add2(2, 3); //uncaught type error var add2 = function(x, y){ return x + y; }; add2(3, 4); //7 | cs |
==> js의 변수생성, 초기화 작업이 분리되어 진행되기 때문. (5장에서)
'언어 > javascript' 카테고리의 다른 글
javascript:: ==(동등)연산자와 ===(일치) 연산자 (0) | 2018.01.04 |
---|---|
javascript::유사배열객체 (0) | 2018.01.04 |
javascript::배열 (0) | 2018.01.04 |
javascript::객체 (0) | 2018.01.03 |
javascript :: prototype (0) | 2018.01.02 |