JS의 기능 객체는 매혹적인 것이지만 너무 유연하기 때문에 종종 혼란 스럽습니다.
먼저 코드 스 니펫을 보여 드리겠습니다.
var scope = "global"; 함수 constructfunction () {var scope = "local"; return new 함수 ( "return scope");} constructFunction () () (); 함수 constructFunction2 () {var scope = "local"; return function () {return scope;}} constructFunction2 () ();이 두 가지를 볼 때 첫 느낌은 무엇입니까? 모두 "로컬"반환? ? 이 경우 아래의 설명을 자세히 살펴 봐야합니다. ConstructFunction2 ()는 폐쇄를 쉽게 이해하기 쉽고 여기에서 자세히 설명하지 않을 것입니다. 다음으로 ConstructFunction ()의 상황에 중점을 둘 것입니다.
기능 () 생성자가 여기에서 사용됩니다. 함수 () 생성자는 일반적으로 사용되지 않지만 여전히 이해해야합니다.
함수 정의 문 또는 함수 직접 정량적 표현식이든 함수 정의는 function () 키워드를 사용해야합니다. 단일 함수는 다음과 같은 function () 생성자에 의해 정의 될 수 있습니다.
var f = 새로운 함수 ( "x", "y", "return x*y");
이 라인의 실제 효과는 다음 줄과 같습니다.
var f = 함수 (x, y) {x*y};함수 () 생성자는 여러 문자열 인수를 전달할 수 있으며 마지막 인수로 표시되는 텍스트는 기능 본문입니다. JavaScript 문을 포함 할 수 있으며 각 진술은 세미콜론으로 나뉩니다. 생성자로 전달 된 다른 모든 인수 문자열은 함수의 이름을 지정하는 문자열입니다. 정의 된 함수에 매개 변수가 포함되지 않으면 문자열 함수 본문을 생성자로 전달하십시오.
function () 생성자에 대해 특별한주의를 기울여야 할 몇 가지 요점이 있습니다.
1. function () 생성자는 JavaScript가 런타임에 동적으로 기능을 생성하고 컴파일 할 수 있도록합니다.
2. function () 생성자가 호출 될 때마다 함수 본문이 구문 분석되고 새로운 기능 객체가 생성됩니다. 이 생성자가 루프 또는 여러 통화로 실행되면 실행 효율이 영향을받습니다. 대조적으로, 루프의 중첩 함수 및 기능 정의 표현식은 실행 될 때마다 재 컴파일되지 않습니다.
2. 마지막 요점은 또한 함수 () 생성자, 즉 생성 된 함수가 어휘 스코프를 사용하지 않는 것에 대한 매우 중요한 점입니다. 반대로, 기능 본체 코드의 컴파일은 항상 최상위 기능에서 실행됩니다. 이것을 읽은 후, 위의 함수 constructFunction () (); "글로벌"을 반환하는 것은 이해하기 쉬워야합니까?
위는 편집기가 소개 한 JS 함수 () 생성자입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!