>  기사  >  웹 프론트엔드  >  js의 범위 및 함수 폐쇄에 대한 예제 설명

js의 범위 및 함수 폐쇄에 대한 예제 설명

小云云
小云云원래의
2018-03-07 10:58:481599검색

이 기사에서는 주로 js의 범위 및 함수 폐쇄에 대한 예를 공유합니다. 1. js의 범위에는 블록 수준 범위가 없고 전역 범위와 함수 범위만 있습니다. 예:

if(true){

var a=100;

}

console.log(a);

Java 또는 C에서 중괄호는 블록 외부에서 얻을 수 없음을 의미하지만 js에서는 가능합니다. 이는

var a;

if(true){

a=100;

}

와 동일합니다. 함수 변수는 전역 범위에 있습니다.

특별한 경우:

function  Loga(){

a=100

}

console.log(a);

여기서 a를 얻을 수도 있습니다. 함수 내부에서 var 없이 변수를 직접 선언하면 상위 범위도 범위로 간주됩니다. 그러나 일반적으로 이렇게 작성하는 것은 권장되지 않습니다. , 선언이 필요합니다.

함수 범위에 대한 문자 그대로의 이해는 함수 내부에 정의된 변수가 함수 내부에서 작동한다는 것입니다.

함수 범위와 전역 범위의 차이점은 전역 범위의 변수는 함수 범위 내에서 호출되고 수정될 수 있다는 것입니다. 전역 범위는 함수 범위에 정의된 변수를 호출할 수 없습니다. 여기서 정의는 매우 중요합니다(수정 여부). 이는 범위 체인을 포함하며, 이는 변수가 상위 범위의 변수에 차례로 액세스할 수 있음을 의미합니다. 내부에서는 접근이 가능하지만 외부에서는 접근이 불가능합니다.

2. 클로저의 개념에 대한 정확한 정의는 없습니다.

a. 반환 값으로 사용되는 함수

예:

  function F1(){
    		var a=100
		return function(){
			console.log(a);//a是自由变量
		}
	}
	var a=200;
	var f=F1();
	f();

이것은 일반적인 폐쇄 사례입니다. 반환 값은 함수이고 실행 환경은 전역이지만 생성 환경은 F1이므로 출력은 100입니다. 변수는 상위 스코프인 F1에서 검색해야 합니다.

두 번째 경우에는 함수가 매개변수로 전달됩니다

	function F1(){
		var a=100
		return function(){
			console.log(a);
		}
	}
	var a=200;
	var f=F1();
	function F2(fn){
		var a=300;
		fn();
	}
	F2(f);

분명히 결과도 같고 이유도 같고 실행 환경도 같습니다 F2이지만 생성 환경은 상위 범위인 F1입니다. F1이므로 출력은 여전히 ​​100입니다.

관련 권장 사항:

스코프 체인 및 프로토타입 체인과 js의 프로토타입 상속

JS 스코프 체인 및 클로저 예시 공유

JavaScript 범위 클로저에 대한 자세한 설명

위 내용은 js의 범위 및 함수 폐쇄에 대한 예제 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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