JavaScript 에서 함수 의 세 가지 정의 방법

자 바스 크 립 트 에서 함수 가 정의 하 는 세 가지 방법 입 니 다.
함수 의 세 가지 정의 방법 은 함수 정의 문, 함수 직접 표현 식 과 Function () 구조 함수 의 방법 이다.다음은 이 몇 가지 방법 을 구체 적 으로 어떻게 실현 하 는 지 차례대로 소개 한다.
1. 함수 정의 문
//    
function sum(a,b){
	return a+b;
}

이것 은 가장 전형 적 인 함수 성명 입 니 다. 키워드 function 으로 시작 한 다음 에 함수 이름 식별 자, 한 쌍 의 괄호 (0 개 이상 의 쉼표 로 구 분 된 매개 변수 이름 포함) 와 한 쌍 의 괄호 (0 개 이상 의 JS 문 구 를 포함 하여 함수 체 를 구성 합 니 다) 를 따 릅 니 다.이러한 함수 정의 방식 은 명시 적 으로 지정 한 함수 이름 이 필요 합 니 다. 코드 가 실행 되 기 전에 해석 기 에 의 해 역할 영역 에 불 러 옵 니 다. 이 기능 은 함수 가 정의 되 기 전에 이 함 수 를 호출 할 수 있 습 니 다.우 리 는 코드 를 통 해 이 점 을 검증 할 수 있다.
console.log(sum);        //     sum      ,        
function sum(a,b){
	return a+b;
}
console.log(sum(2,3));   //5

함수 성명 을 언급 한 이상 함수 의 역할 영역 을 언급 해 야 합 니 다.함수 역할 영역 은 함수 내 에서 설명 하 는 모든 변 수 를 함수 내 에서 항상 볼 수 있 는 것 을 말 합 니 다. 이것 은 변 수 는 설명 하기 전에 이미 사용 할 수 있다 는 것 을 의미 합 니 다.이 기능 은 함수 내 에서 설명 하 는 모든 변 수 를 미리 설명 하 는 것 이 라 고 할 수 있 습 니 다. 설명 하기 전에 정 의 된 것 이지 만 이 변 수 를 실행 할 때 만 실제 값 을 부여 할 수 있 습 니 다.코드 로 이 점 을 뚜렷하게 볼 수 있다.
var scope = "global";
function f(){
  console.log(scope);         //  “undefined”,   “global”
  var scope = "local";          //         ,                    
  console.log(scope);         //  “local”
}
f();

이상 코드 등가
var scope = "global";
function f() {
  var scope;                //            ,     
  console.log(scope);         //    ,  “undefined”,   “global”
  var scope = "local";       //           
console.log(scope);         //  “local”
}
f();

2. 함수 직접 표현 식
//      
var factorial = function fact(x){   //          
	if(x<0) {return NaN;}
	else if(x===0) {return 1;}
	else
	return x*fact(x-1);     //    
};
console.log(factorial(3));      //6

함수 정의 문구 와 마찬가지 로 함수 직접 표현 식 도 키워드 function 을 사 용 했 습 니 다.일반적으로 이러한 정의 방식 은 할당 과 호출 과정 에서 함 수 를 정의 하 는 등 큰 표현 식 의 일부분 으로 적용 된다.함수 로 직접 생 성 된 함수 입 니 다. 함수 이름 은 생략 할 수 있 습 니 다. 이때 익명 함수 입 니 다.다음 과 같은 예 에서 보 듯 이 이렇게 하면 코드 를 더욱 치밀 하 게 할 수 있다.함수 정의 표현 식 은 한 번 만 사용 할 수 있 는 함 수 를 정의 하 는 데 특히 적합 합 니 다.
var f=function(x){    //          
  return x*x;
}

함수 정의 문구 와 달리 함수 직접 표현 식 은 코드 가 실 행 될 때 만 함 수 를 불 러 옵 니 다. 아래 코드 로 설명 할 수 있 습 니 다.
console.log(f);        //     undefined,    f    
var f=function(x){     //      
  return x*x;
}
console.log(f);       //           

3. Function () 구조 함수
var f = new Function("x","y","return x+y");  //Function()    
var f = function(x,y){return x+y};  //         

Function () 구조 함 수 는 임의의 문자열 의 실 삼 을 전달 할 수 있 으 며, 마지막 실 삼 이 표시 하 는 텍스트 는 함수 체 로 임의의 자바 script 문 구 를 포함 할 수 있 습 니 다.만약 구조의 함수 가 어떠한 매개 변수 도 포함 하지 않 는 다 면 하나의 함수 체 만 전달 하면 된다.앞의 두 가지 방식 과 달리 Function () 구조 함 수 는 JavaScript 가 실 행 될 때 동적 으로 함 수 를 만 들 고 번역 할 수 있 도록 합 니 다.Function () 구조 함 수 를 호출 할 때마다 함수 체 를 해석 하고 새로운 함수 대상 을 만 듭 니 다.따라서 순환 하거나 여러 번 호출 된 함수 에서 이 구조 함 수 를 실행 하면 집행 효율 이 영향 을 받는다.이에 비해 순환 중인 내장 함수 와 함수 정의 표현 식 은 실 행 될 때마다 다시 컴 파일 되 지 않 습 니 다.
Function () 구조 함수 와 주의해 야 할 점 은 그것 이 만 든 함수 가 품사 역할 영역 을 사용 하 는 것 이 아니 라 함수 체 코드 의 컴 파일 은 항상 최상 위 함수 에서 실 행 됩 니 다.다음 코드 와 같이:
var a = 3;     //          a
function f(){
	var a = 2;   //           a
	return new Function("return a*a;");   //         
}
console.log(f()());     //     9  4,                

우 리 는 Function () 구조 함 수 를 전역 작용 역 에서 실행 되 는 eval () 이 라 고 볼 수 있다.실제 프로 그래 밍 에서 Function () 구조 함 수 는 거의 사용 되 지 않 고 앞의 두 가지 정의 방법 은 비교적 보편적으로 사용 된다.

좋은 웹페이지 즐겨찾기