함수 정의 함수는 키워드 함수, 함수 이름, 매개변수 집합, 괄호 안에 실행될 코드 등의 방식으로 선언됩니다.
함수 구성 구문에는 세 가지 유형이 있습니다.
Js 코드
1.function functionName(arg0, arg1, ... argN) { 문 }//function 문
2.var function_name = new Function(arg1, arg2, ..., argN , function_body); //Function() 생성자
3.var func = function(arg0, arg1, ... argN) { 명령문 };//함수 직접 수량
예:
Js 코드
1.function f( x){return x* x};//함수 명령문
2.var f = new Function("x","return x*x;");//Function() 생성자
3.var f = function(x) {return x*x;};//함수 리터럴
함수에 명확한 반환 값이 없거나 매개 변수 없이 return 문을 호출하는 경우 실제로 반환되는 값은 다음과 같습니다. 한정되지 않은.
Function() 생성자 Function은 실제로 완전한 기능을 갖춘 객체입니다. Function 클래스는 개발자가 정의한 모든 함수를 나타낼 수 있습니다. Function 클래스를 사용하여 직접 함수를 생성하는 구문은 다음과 같습니다.
var function_name = new function(arg1, arg2, ..., argN, function_body)
위 형식에서 각 arg는 매개변수이고, 그리고 마지막 인수는 함수의 본문(실행할 코드)입니다. 이러한 매개변수는 문자열이어야 합니다.
var sayHi = new Function("sName", "sMessage", "alert('Hello 'sName sMessage);")
sayHi("jzj,", "Hello!");//Hello jzj , 안녕하세요!
함수 이름은 단지 함수를 가리키는 변수일 뿐인데, 그 함수를 다른 함수에 매개변수로 전달할 수 있나요? 대답은 '예'입니다.
Js 코드
function callAnotherFunc(fnFunction, vArgument) {
fnFunction(vArgument);
}
var doAdd = new Function("iNum", "alert(iNum 10)")
callAnotherFunc (doAdd, 10); //Output "20"
참고: Function 생성자를 사용하여 함수를 생성할 수 있지만 함수를 정의하는 것이 훨씬 느리기 때문에 사용하지 않는 것이 가장 좋습니다. 전통적인 방법을 사용합니다. 그러나 모든 함수는 Function 클래스의 인스턴스로 간주되어야 합니다.
정의한 함수에 매개변수가 없으면 문자열(즉, 함수 본문)을 생성자에 전달하면 됩니다.
참고: 생성자 Function()에 전달된 매개변수 중 어느 것도 생성 중인 함수의 이름을 지정하지 않습니다. Function() 생성자로 생성된 이름 없는 함수를 "익명 함수"라고도 합니다.
Function() 함수를 사용하면 함수 문의 미리 컴파일된 함수 본문으로 제한하지 않고 함수를 동적으로 빌드하고 컴파일할 수 있습니다.
함수 리터럴 함수 리터럴은 익명 함수를 정의할 수 있는 표현식입니다. 함수 리터럴의 구문은 명령문이 아닌 표현식으로 사용된다는 점과 함수 이름을 지정할 필요가 없다는 점을 제외하면 함수 문의 구문과 매우 유사합니다. 구문:
Js 코드
var func = function( arg0, arg1, ... argN) { 문 };//함수 리터럴
함수 리터럴은 이름이 지정되지 않은 함수를 생성하지만 해당 구문에서는 함수 이름을 지정할 수도 있다고 규정합니다. 자신을 호출하는 재귀 함수를 작성할 때 매우 유용합니다. 예를 들어
Js 코드
var f = function Fact(x) {
if (x <= 1) {
return 1
} else {
return x * Fact (x - 1);
}
};
참고: 실제로는fact()라는 함수를 생성하지 않으며, 함수 본문이 이를 참조하도록 허용합니다. 이름. 1.5 이전 버전의 JavaScript에서는 이 명명된 함수 리터럴을 올바르게 구현하지 않았습니다. Js 코드
코드 복사