Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 상속
- 자바 조합 재귀
- 알고리즘
- 알고리즘 그래프
- 자바스크립트 이벤트처리
- jquery 속성선택자
- str to char array
- 재귀함수
- 자바
- jquery 필터선택자
- java lambda
- 재귀
- 자바 순열 코드
- parseInt()
- 순열 재귀
- char to str
- inner class
- java Collections.sort()
- 조합 재귀
- 서로소
- jquery dom 계층 선택자
- jquery 이벤트 처리
- 자바스크립트 이벤트중지
- Java
- 자바입출력
- java 내부 클래스
- 자바 재귀 조합
- 순열코드
- Interface
- 후위표기
Archives
- Today
- Total
유블로그
자바스크립트 함수, 함수 호이스팅 본문
함수 정의
3가지 방법
- 함수 선언문
- 함수 표현식
- Function() 생성자 함수
1. 함수 리터럴(함수 선언문)
function add(x, y) {
return x + y;
}
console.log(add(3,4)); // 7
2. 함수 표현식
함수 리터럴로 함수를 만들고, 변수에 할당하여 생성하는 방식.
var add = function (x, y) {
return x + y;
}
var plus = add;
console.log(add(3,4)); // 7
console.log(plus(3,4)); // 7
여기서는 function 키워드 뒤에 함수명 없어도 된다.
add는 함수 이름이 아니라 함수를 참조하는 변수다.
plus도 add가 참조하는 값을 그대로 받을 수 있다.
var add = function sum(x, y) {
return x + y;
}
console.log(add(3,4)); // 7
console.log(sum(3,4)); // 에러 !!
위처럼 이름을 주었을 때 (기명함수) 에러가 난다.
함수를 변수에 할당했을 때는 함수명이 아니라 변수명으로 접근해야한다.
함수 내부에서 sum 으로 접근은 가능하다.(재귀함수)
var add = function add(x, y) {
return x + y;
}
console.log(add(3,4)); // 7
내부적으로 위처럼 변수명이 함수명으로 변경된다고 한다.
3. Function()
자바스크립트의 함수도 Function() 이라는 기본 내장 생성자 함수로부터 생성된 객체이다.
1.2 방법도 내부적으로 Function() 으로 생성된다.
var add = new Function('x', 'y', 'return x + y');
console.log(add(3,4)); // 7
하지만 잘 쓰이지 않는다.
함수 호이스팅
add(3,4); // 7
function add(x, y) {
return x + y;
}
add(3,4); // 7
함수 선언문 형태로 정의한 함수는 코드 맨 처음부터 유효범위 시작 !
= 함수 호이스팅
add(3,4); // 에러 !
var add = function (x, y) {
return x + y;
}
add(3,4); // 7
하지만 함수 표현식 형태로 함수를 정의하면 함수 호이스팅이 일어나지 않아 함수 정의 전 실행하면 에러가 난다.
'JavaScript & jQuery' 카테고리의 다른 글
자바스크립트 콜백함수, 즉시 실행 함수, 내부 함수 등 (0) | 2021.06.18 |
---|---|
자바스크립트 함수 객체 (0) | 2021.06.18 |
자바스크립트 연산자 (0) | 2021.06.17 |
자바스크립트 배열 (0) | 2021.06.17 |
프로토타입 (0) | 2021.06.17 |