js 변수 역할 영역 및 접근 성 검토
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 와 무관 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.