변수의 범위는 변수의 가시성을 말하며, 라이프 사이클(생존 기간)은 변수를 다른 관점에서 살펴봅니다.
JS에서 변수의 범위는 전역 변수와 지역 변수로 나누어집니다. 함수 내에서 정의된 변수를 지역 변수, 함수 외부에서 정의된 변수를 전역 변수라고 합니다. ("함수 외부의 것을 전역 변수라고 합니다"는 상대적입니다. 여기서 논의되는 전제는 var로 명시적으로 선언된 변수입니다. 함수 내에서 var 없이 정의된 변수는 기본적으로 전역 변수입니다. 물론 var 없이 변수를 선언하는 것은 눈살을 찌푸리게 합니다. ).
var glob = 4;//전역 선언 함수 외부 변수
function fun() {
var height = 20; // 함수에서 var로 선언한 것은 지역 변수입니다.
Weight = 50; // 함수에서 var 없이 선언한 것 함수는 전역 변수입니다
}
fun();
alert(weight)
JS에는 블록 수준 범위가 없습니다. 중괄호 {}. 자바에는 있습니다. 메인 메소드에 다음 코드를 작성하세요
public static void main (String... args) {
for(int i=0;i<5;i ) {
}
{
int j=10
}
int z = 20;
System.out.println(i); // i가 표시되지 않고 구문 분석이 오류를 보고합니다. 즉, 컴파일이 실패합니다.
System.out.println(j); / j가 보이지 않습니다. 구문 분석 오류가 보고됩니다. 즉,
코드 복사
코드는 다음과 같습니다.
{
var j=10;
}
alert( i);//출력 4, 블록 수준 범위 없음
alert(attr); , 블록 수준 범위 없음
alert(j);//출력 10, 블록 수준 범위 없음
이 역시 문제를 보여줍니다. for 루프를 사용하여 동시에 변수를 선언하지 마세요. 그렇지 않으면 전역 명명 범위가 오염될 수 있습니다.
물론 JS1.7에서는 변수를 선언하기 위해 let 키워드가 제안되었으며(https://developer.mozilla.org/cn/New_in_JavaScript_1.7 참조), 이는 for 문의 범위에만 적용됩니다.
코드 복사
코드는 다음과 같습니다.
JS1.7에는
ps: firefox2는 JS1.7을 구현합니다