;
여기에 제목 삽입 >
/*
* 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를 반환합니다.
*/