js 변수 역할 영역 및 접근 성 검토

6485 단어
모든 언어 는 변수의 개념 이 있 고 변 수 는 정 보 를 저장 하 는 요소 이다.예 를 들 어 다음 함수: 

    function Student(name,age,from)  
  

 this.name = name; 
  this.age = age; 
 this.from = from; 
  this.ToString = function() 
 { 
  return "my information is name: "+this.name+",age : "+this.age+", from :" +this.from; 
  } 
}
 
   Student 류 는 name (이름), age (나이), from (본적) 세 가지 변수 가 있 는데 이 세 가지 변 수 는 한 대상 을 묘사 하 는 정 보 를 구성 합 니 다.물론 Student 의 메 시 지 를 되 돌려 주 는 방법 도 있다.
   그러나 우 리 는 변 수 를 정 의 했 습 니 다. 변 수 는 계속 존재 할 수 있 고 소각 될 때 까지 어디서 든 접근 하고 사용 할 수 있 습 니 다.곰 곰 이 생각해 보면 위의 수 요 는 비교적 지나치다. 왜냐하면 일부 변 수 는 특정한 기능 이 실 현 된 후에 더 이상 이용 하지 않 기 때문이다. 그러나 이 변수 가 존재 한다 면 시스템 자원 을 점용 했다. 속담 에 '똥통 에 서서 당기 지 않 는 다' 는 말 이 있다.
   그래서 우 리 는 변수의 신속 함 과 수요 에 따라 소각 하 는 것 에 대해 토론 할 화제 가 생 겼 다.
   자, 본론 으로 들 어가 보 세 요. 본인 이 접촉 한 바 에 의 하면 js 에서 다음 과 같은 몇 가지 유형의 변 수 를 지원 합 니 다. 그것 이 바로 국부 변수, 클래스 변수, 사유 변수, 실례 변수, 정적 변수 와 전역 변수 입 니 다.이어서 우 리 는 하나하나 연구 해 보 자.
부분 변수:
부분 변 수 는 일반적으로 {} 범위 내 에서 유효 변 수 를 말 합 니 다. 즉, 구문 블록 내 에서 효과 적 인 변 수 를 말 합 니 다. 예 를 들 어: 
 

   function foo(flag)  
  

 var sum = 0; 
 if(flag == true) 
 { 
  var index; 
  for(index=0;index<10;index++) 
  { 
   sum +=index; 
  } 

 document.write("index is :"+index+"
"); 
 return sum; 

//document.write("sum is :" +sum+"
"); 
document.write("result is :"+foo(true)+"
"); 
   이 코드 가 실 행 된 후 출력 한 결 과 는 "index" 입 니 다. is :undefined” 화해시키다 “result is :0 "출력 을 원 하 는 index 변수의 값 이 undefined, 즉 정의 되 지 않 은 것 을 볼 수 있 습 니 다.따라서 index 변 수 는 if 구문 블록 이 끝 난 후에 소각 되 었 음 을 알 수 있 습 니 다.그럼 'sum' 변 수 는 요?이 변 수 는 foo () 함수 세그먼트 가 실 행 된 후에 소각 되 었 습 니 다. 제 가 설명 한 문 구 를 지우 고 실행 하면 시스템 이 잘못 보고 되 는 것 을 발견 할 수 있 습 니 다.주의해 야 할 것 은 내 가 위의 foo () 함 수 를 다음 과 같이 바 꾸 면: 
 

   function foo(flag)  
  
 { 
  var sum = 0; 
  for(var index=0;index<10;index++) 
  { 
   sum +=index; 
  } 
  document.write("index is :"+index+"
"); 
  return sum; 

   index 값 을 출력 할 수 있 습 니 다 ("index" is :10 "), 이것 은 js 와 다른 언어의 다른 부분 입 니 다. index 는 for 순환 {} 밖에서 정의 되 기 때문에 그 역할 범 위 는 foo () 함수 사용 이 끝 난 후에 야 삭 제 됩 니 다.
  클래스 변수:
   클래스 변 수 는 실제 적 으로 클래스 의 속성 이나 필드 또는 방법 입 니 다. 이 변 수 는 이러한 인 스 턴 스 대상 이 삭 제 된 후에 자동 으로 삭 제 됩 니 다. 예 를 들 어 우리 가 시작 할 때 들 었 던 Student 류 등 입 니 다.이것 은 우리 가 많이 토론 하지 않 으 니, 모두 스스로 한번 해 보 세 요.
개인 변수:
   개인 변 수 는 특정한 유형의 내부 에서 사용 하 는 속성 일 가치 가 있 고 외부 에서 호출 할 수 없 으 며 그 정 의 는 사용 하 는 것 입 니 다. var 성명 하 러 왔 습 니 다.하면, 만약, 만약... 이 변 수 는 전역 변수 임 을 설명 합 니 다. 예 를 들 어: 

   function Student(name,age,from)  
  


 this.name = FormatIt(name); 
 this.age = age; 
this.from = from; 
 var origName = name; 
 var FormatIt = function(name) 
 { 
 return name.substr(0,5); 
 } 
 this.ToString = function() 
 { 
  return "my information is name: "+origName+",age : "+this.age+", from :" +this.from; 
 } 

   여기에서 우 리 는 각각 origName 과 Formattit () 두 개의 개인 변 수 를 정의 했다.
   우 리 는 이러한 상황 에서 의 방법 도 변수 가 됩 니 다. 이 상황 에서 변 수 는 function 형식의 변수 이 고 function 도 Object 류 의 계승 류 에 속 하기 때 문 입 니 다.이런 상황 하에 서 만약 우리 가 정의 한다 면 var zfp = new Student("3zfp",100,"ShenZhen")。이 두 변 수 는 zfp. origName 과 zfp. Formattit () 방식 으로 접근 할 수 없습니다.
다음 몇 가 지 를 주의 하 세 요.
1. 개인 변 수 는 this 로 표시 할 수 없습니다.
2. 개인 적 인 방법 유형의 변 수 를 호출 하려 면 이 방법 이 설명 한 후에 해 야 합 니 다.만약 에 우리 가 Student 류 를 다음 과 같이 개조 한다 면:
코드 가 실 행 된 후 "대상 을 찾 을 수 없습니다" 라 는 오류 가 발생 합 니 다. FormatName () 이 정의 되 지 않 았 다 는 뜻 입 니 다.
3. 개인 적 인 방법 으로 this 가 지시 하 는 변수 (공개 변수) 에 접근 할 수 없습니다. 다음 과 같 습 니 다.
코드 를 실행 하면 시스템 이 알려 줍 니 다. "this. basicInfo 가 비어 있 거나 대상 이 아 닙 니 다" 의 오류 입 니 다.
기본 적 인 결론 은 개인 적 인 방법 은 개인 적 인 속성 에 만 접근 할 수 있 고 개인 적 인 속성 은 성명 과 할당 후 클래스 의 어느 곳 에서 든 방문 할 수 있다 는 것 이다.
인 스 턴 스 변수:
인 스 턴 스 변 수 는 인 스 턴 스 대상 이 가지 고 있 는 변수 입 니 다.예:
정적 변수:
정적 변 수 는 특정한 클래스 가 가 진 속성 입 니 다. 클래스 이름 + "." + 정적 변수 이름 이 속성 에 접근 합 니 다.다음 과 같이 명확 한 설명 을 할 수 있다.

   function Student(name,age,from)  
  

 var origName = name; 
 this.name = FormatName(name); 
 this.age = age; 
 this.from = from; 
 var FormatName = function(name) 
 { 
  return name+".china"; 
 } 
 this.ToString = function() 
 { 
  return "my information is name: "+origName+",age : "+this.age+", from :" +this.from; 
 } 

var zfp = new Student("3zfp",100,"ShenZhen"); 

상기 코드 를 실행 하면 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
undefined
is 3zfp owned object
info is changed
다음 몇 가 지 를 주의 하 세 요.
1. 클래스 이름 + "." + 정적 변수 이름 정적 변 수 를 설명 하 는 방식
2. 정적 변 수 는 클래스 의 특정한 인 스 턴 스 대상 만 의 속성 에 속 하지 않 고 대상 에 대한 공유 입 니 다.
3. 인 스 턴 스 대상 이름 + "." + 정적 변수 이름 으로 접근 할 수 있 습 니 다.
전역 변수:
전역 변 수 는 전체 시스템 이 실행 되 는 동안 제어 에 효과적으로 접근 하 는 변수 입 니 다. 보통 js 코드 의 시작 부분 에서 정 의 됩 니 다. 예 를 들 어:
4. 567913. 다음 과 같은 몇 가 지 를 주의 하 세 요.
1. 변수 가 var 를 사용 하지 않 으 면 전역 변수 로 간 주 됩 니 다.예:
var copyright = "3zfp owned";
var foo =function(fooInfo)
{
 _foo = fooInfo;
document.write(copyright+"");
}
new foo("foo test");
document.write(_foo+"");
실행 코드 는 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
3zfp owned
foo test
그러나 이것 은 또 하나의 주의 점 이 있 습 니 다. function 은 컴 파일 기간 의 대상 입 니 다. 즉,foo 라 는 전역 변 수 는 foo 대상 이 실례 화 된 후에 야 초기 화 될 수 있 습 니 다. 즉, 만약 에
new foo();
document.write(_foo+"");
맞 바꾸다
document.write(_foo+"");
new foo();
시스템 알림 "_foo 정의 되 지 않 음 "이 라 고 말 했다. 
2. 전역 변수 와 같은 이름 의 부분 변수 속성 을 정의 하면 다음 과 같 습 니 다.
4. 567913. 실행 코드 는 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
3zfp owned
foo test
기능 컴 파일 기간 에 변 수 를 완성 하 는 정의 입 니 다. 즉, foo 내부 의 copyright 의 정 의 는 컴 파일 기간 에 완 성 된 것 입 니 다. 그 역할 도 메 인 은 foo 대상 에서 만 유효 하 며 외부 에서 정의 하 는 전체 변수 copyright 와 무관 합 니 다.

좋은 웹페이지 즐겨찾기