JavaScript 함수의 정의
1 : 키워드 함수를 호출하여 구성합니다.
기능 거리 (x1, x2, y1, y2)
{{
var dx = x2-x1;
var dy = y2-y1;
return math.sqrt (dx*dx+dy*dy);
}
2 : funion () 구성 기능을 사용하십시오
var f = 새로운 함수*"x", "y", "return x*y");
이 코드 라인은 기본적으로 익숙한 구문 정의의 기능적 정의와 동일합니다.
함수 f (x, y)
{{
x*y를 반환합니다.
}
functino () 생성자는 다중 문자열 매개 변수를 수용 할 수 있습니다. JavaScript 문을 포함 할 수있는 마지막 매개 변수 동안 함수의 본문은 문 사이의 숫자를 분리합니다. 다른 매개 변수는 함수에 의해 정의 된 양식 매개 변수 이름의 문자열을 설명하는 데 사용됩니다. 매개 변수없이 함수를 정의하면 문자열 (즉, 함수의 주제) 만 생성자에게만 전달할 수 있습니다.
생성자 함수 ()로 전달 된 매개 변수 중 어느 것도 사용하여 생성 할 함수 이름을 설명하는 데 사용되지 않습니다. USEN -UNNAMAL FUNTUCTOR () CONTUCTOR에 의해 생성 된 기능은 때때로 "익명 함수"가됩니다.
function () 생성자의 기능이 무엇인지 알고 싶을 수도 있습니다. 왜 함수 명령문을 사용하여 모든 함수를 정의 할 수 없는가? 그 이유는 function () 생성자를 사용하면 함수를 동적으로 빌드하고 컴파일 할 수 있기 때문에 기능 문에 의해 전달 된 기능 본체로 제한하지 않습니다. 이에 의해 가져온 음의 충격 효과는 함수를 호출 할 때마다 function () 생성자가 컴파일해야한다는 것입니다. 따라서이 생성자를 루프 본문이나 종종 사용하는 기능으로 자주 호출해서는 안됩니다.
기능 () 구성 함수를 사용하는 또 다른 이유는이 경우 성명서를 정의하는 대신 JavaScript의 표현의 일부로 함수를 정의 할 수 있기 때문입니다.
3 : 직접 수량 기능
기능 직접 수량은 익명 함수를 정의하는 표현입니다. 함수 직접 수량의 구문은 함수 명령문과 매우 유사하지만 명령문이 아닌 표현식으로 사용되며 함수 이름을 지정할 필요가 없습니다. 다음 세 라인 코드는 function () 문, function () 생성자 및 기능의 함수를 사용하여 기본적으로 동일한 기능을 정의합니다.
함수 f (x) {return x*x};
var f = 새로운 함수 ( "x", "return x*x;");
var f = 함수 (x) {리엔 x*x};
함수는 이름이없는 함수를 직접 생성하지만 구문은 또한 기능 이름을 지정할 수 있다고 규정하고 있으며, 이는 자체 재귀 함수를 작성하고 호출 할 때 매우 유용합니다. 예를 들어:
var f = 함수 사실 (x) {if (x <= 1) return x*fact (x-1);};
위의 코드는 이름이없는 함수를 정의하고 참조를 위해 변수 f에 저장됩니다. 실제로 Fact ()라는 함수를 생성하지는 않지만 함수가 이름을 사용하여 인용 할 수 있습니다. 그러나 이전 버전의 JavaScript1.5는이 이름의 기능적 기능을 올바르게 구현하지 않았다는 점에 유의해야합니다.
함수의 기능의 사용은 function () 구성 함수를 사용하여 함수를 생성하는 방법과 매우 유사합니다. 그것들은 모두 진술에 의해 생성되지 않은 JavaScript의 표현에 의해 만들어지기 때문에,이를 사용하는 방법은 특히 한 번만 사용되고 이름을 지정할 필요가없는 함수의 경우보다 유연합니다. 예를 들어, 함수 직접 측정 표현식으로 지정된 함수는 변수로 저장하고 다른 함수로 전달되며 직접 호출 할 수 있습니다.
a [0] = function (x) {return x*x;}; // 함수를 정의하고 저장합니다
A.SORT (a, b) {return ab;});
var tensquared = (x) {return x*x;});
function () 생성자와 마찬가지로 함수는 이름이없는 함수를 직접 생성 하며이 함수를 속성에 자동으로 저장하지 않습니다. 그러나 함수 () 생성자와 비교하여 함수 직접 금액은 중요한 이점이 있습니다. function () 구성 함수에 의해 생성 된 함수의 주제는 문자열로 설명되어야하며,이 방법으로 길고 복잡한 함수를 표현하는 방법은 서투른 것입니다. 그러나 함수의 본체는 표준 JavaScript 구문에 의해 사용됩니다. 함수 직접 금액은 한 번만 해결되며 JavaScript 코드는 function () 구성 기능으로 전달됩니다. function () 생성자에 대한 문자열로 구성된 기능은 생성자가 호출 될 때마다 한 번만 구문 분석되고 컴파일됩니다.
JavaScript1.1에서 생성자 함수 ()는 JavaScript1.2에서 함수를 정의하는 데 사용될 수 있습니다. 이 두 방법의 중요한 차이점에주의를 기울여야합니다.
먼저, 생성자 함수 ()는 런타임 동안 동적 생성 및 컴파일 자바 스크립트 코드를 허용합니다. 그러나 함수 직접 수량은 함수 문과 마찬가지로 함수 구조의 정적 부분입니다.
둘째, 첫 번째 차이의 피할 수없는 결과로서, 생성자 함수 ()가 함수 본문을 분석하고 새로운 이스트 한 숫자 객체를 만드는 데 사용될 때마다. 생성자의 호출이 사이클에 나타나거나 종종 호출되는 함수에 나타나면이 방법의 효율은 매우 낮습니다. 반면에, 사이클 및 함수에 직접 나타날 수있는 중첩 된 함수는 각 호출마다 재합매되지 않으며, 함수 직접 금액을 만날 때마다 새 기능 객체가 생성되지 않습니다.
function () 생성자 사이의 금액과 함수 사이의 세 번째 요점은 생성자 함수 ()에 의해 생성 된 함수가 문구 범위를 사용하지 않는다는 것입니다. 코드가 설명됩니다.
var y y = "글로벌";
기능 constructionFunction () ()
{{
var y y = "로컬";
새 기능을 반환합니다 ( "반환 y"); // 로컬 범위를 캡처하지 마십시오.
}
// function () 생성자가 반환 한 함수는 로컬 범위를 사용하지 않기 때문에이 코드 라인은 "Global"을 표시합니다.
// 직접 금액 함수를 사용하면이 코드 줄에 "로컬"이 표시 될 수 있습니다.
경고 (constructure ());