>  기사  >  웹 프론트엔드  >  JavaScript에서 함수와 함수의 간단한 구분

JavaScript에서 함수와 함수의 간단한 구분

高洛峰
高洛峰원래의
2016-11-25 11:17:271216검색

Js 코드
var a = new Function("document.write(a)");

var b = function(){document.write(b);}

function c(){
document.write(c);
}

a();
c(); abc

후자의 두 가지 정의 방법이 더 일반적으로 사용됩니다. 여기서 변수 b는 익명 함수에 대한 참조이고 c는 함수 본문이 할당된 함수입니다.
첫 번째 방법은 정보를 검색한 후 요약을 작성하는 것입니다.

Function은 Javascript의 함수(사례 참고)에서 파생된 것입니다. Function은 참조 유형입니다(함수는 물론 참조 유형입니다.). 개인적인 추측은 두 번째 유형의 익명 함수 참조와 유사합니다.

함수 인스턴스 생성 방법:

var instanceName = new Function([arg1 [, arg2 [, ...]] ,] body)
처음 몇 항목은 매개변수이고 마지막 항목은 함수입니다.
Js 코드
var myAdd = new Function("x", "y", "return x + y")
var sum = myAdd(17, 34); >
실행 최종 합계 값은 51입니다.

Function() 생성자를 사용하면 함수 문의 미리 컴파일된 함수 본문으로 제한하지 않고 함수를 동적으로 생성하고 컴파일할 수 있습니다. 이것의 부정적인 부작용은 함수가 호출될 때마다 Function() 생성자가 이를 컴파일해야 한다는 것입니다. 따라서 루프 본문이나 자주 사용되는 함수에서 이 생성자를 자주 호출하면 안 됩니다.

익명 함수는 Function() 생성자와 유사합니다. 차이점은 익명 함수는 사용될 때 한 번만 구문 분석되는 반면, Function() 생성자에 문자열로 전달된 JavaScript 코드는 호출될 때마다 생성된다는 것입니다. 각 함수는 한 번만 구문 분석되고 컴파일되어야 합니다.

또 한 가지 주목할 만한 점은 변수 범위와 Function() 생성자 변수 범위가 전역적이라는 것입니다.

예:

Js 코드
var y="global";
function constructorFunction()
{
var y="local"
var fun = new Function ( "alert(y);");//로컬 범위를 캡처하지 않습니다.
재미();
}
constructFunction()


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.