>웹 프론트엔드 >JS 튜토리얼 >JavaScript 변수 범위 분석_javascript 기술

JavaScript 변수 범위 분석_javascript 기술

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

/* 코드 1 */
var 범위 = "global" ;
function checkScope() {
var range = "local ";
function childCheck() {
var range = "childLocal "
document.write(scope);
}
function childUndefine() {
document.write(scope);
var range
}
function childOverride() {
scope = "childOverride"; 🎜>document .write(scope)
}
document.write(scope); //"local" 출력
childCheck(); //"childLocal" 출력
childUndefine(); /Output" undefine"
childOverride(); //"childOverride" 출력
document.write(scope); //"childOverride" 출력
}
checkScope(); childLocal undefinedchildOverride childOverride "
document.write(scope); //"전역" 출력

전역 범위 및 로컬 범위
전역(전역) 변수의 범위는 Javascript에서 전역입니다. 어디에나 정의가 있습니다. 함수 내부에 선언된 변수는 지역 변수이고 해당 범위는 지역이며 함수 본문 내부에서만 정의됩니다. 다음 결과는 독자들에게 놀라운 일이 아닙니다.

코드 복사 코드는 다음과 같습니다.
/* 코드 2 */
varscope = "global";
function checkScope() {
varscope = "local";
document.write(scope);
checkScope(); local"
document.write(scope); //"global" 출력


전역 변수 범위에서는 var 문 없이도 변수를 사용할 수 있지만 선언 시에는 var 문을 사용해야 합니다. 지역 변수, 그렇지 않으면 전역 변수에 대한 참조로 처리됩니다. 아래 코드를 보세요.


/* 코드 3 */
var range = "global";
function checkScope() {
scope = "local";
document.write(scope)
}
checkScope() ; //output" local"
document.write(scope); //"local" 출력


블록 범위 없음
Javascript에는 블록 수준 범위가 없습니다. 함수는 함수 전체에 모두 정의되어 있습니다. 다음 코드는 익숙하지 않은 독자에게는 의외일 수 있습니다.


/* 코드 4 */
varscope = "global";
function checkScope() {
document.write(scope); // 명령문 4.1
varscope = "local"; /Statement 4.2
document.write(scope);
}
checkScope(); // "undefinelocal" 출력


Statement 4.1로 인해(varscope = "local" ; ) 선언된 변수는 checkScope 함수 전체 범위 내에서 유효하므로 4.2문(document.write(scope); )이 실행되면 범위는 지역 변수를 참조하며, 아직 지역 변수 범위는 아직 정의되지 않았습니다. 이므로 "정의되지 않음"이 출력됩니다. 따라서 좋은 프로그래밍 방법은 함수 시작 부분에서 모든 변수 선언을 그룹화하는 것입니다.

위의 내용을 이해하신 후, 코드 1을 보실 때 독자분들은 혼동하지 마시기 바랍니다.

객체의 속성변수
객체의 속성변수는 비교적 이해하기 쉽습니다. 아래 코드를 보시면 독자분들이 헷갈리지 않으실 겁니다.


/* 코드 5 */
var 범위 = "전역";
var obj = new Object();
obj.scope = "객체";
obj.checkScope = function() {
var 범위 = "loacl";
document.write(scope); //"loacl" 출력
document.write(this.scope); //"객체" 출력
document.write(window.scope); global"
}
obj.checkScope(); //"loacl object global" 출력

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