>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술의 변수 범위 폐쇄에 대한 심층적인 이해

JavaScript_javascript 기술의 변수 범위 폐쇄에 대한 심층적인 이해

WBOY
WBOY원래의
2016-05-16 16:48:321140검색
코드 복사 코드는 다음과 같습니다.

;


여기에 제목 삽입 >
/*
* 1. js의 모든 변수는 공개입니다.
2. js에는 정적 변수가 없습니다.
3. 폐쇄: 함수 외부의 변수는 함수 내부에서 호출할 수 있습니다. ; 그 반대도 마찬가지입니다.

var r=10;
function test1(){
var r2="abc"
//alert(r)
}
//alert(r2);//접근할 수 없는 함수 내부의 r2
test1()
//중첩 함수에서도 괜찮습니다.
function test2(num1){
function test3 (num2,num3){
return num2 num3 num1;
return test3(10,20)
}
//alert(test2(30)); // ----------루프 내 종료---------
function testfun(){
var r= 1;
var arr=[];
for(var x=0;x<3;x ){
r
arr[x]=function(){
r ;
}
}
return arr;
}
alert("testfun:" testfun())
alert( "arr :" arr2[0]);
alert("arr:" arr2[1]());
alert("arr:" arr2[2]());
//= == =======위 팝업창 3개 결과는 모두 4개==========
/*이유 분석:
자바스크립트에는 어떤 기능이 있는지 이해가 되셨나요?
함수는 실행 가능한 코드 블록입니다. 예를 들어 함수를 정의하는 두 번째 방법은
var add=new Function("a","return a 10입니다. "); 기본 핵심은 이 함수 이름이
변수에 대해 생성된 실행 가능한 코드 조각을 가리킨다는 것입니다.
* 먼저 testfun 함수가 실행된 후 arr[0], arr[1] 및 arr[]는 모두 동일한
실행 코드 블록 function(){
return r
}을 저장합니다. 즉, 위 3개는 그냥 함수변수입니다.
그리고 이때 r의 값은 4입니다.
arr[0을 실행할 때. ]()인 경우 이 코드 블록의 코드가 실행됩니다.
따라서 최종 결과는 r을 반환하며, 당연히 4를 반환합니다.
*/






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