변수와 변수 선언은 언어의 가장 기본적인 개념이므로 초보자도 금방 익힐 수 있습니다. JavaScript에서 변수를 선언할 때도 마찬가지입니다. var(키워드) + 변수 이름(식별자)이면 매우 간단합니다.
방법 1
var 테스트;
var test = 5; 이 문장은 함수에 포함될 수 없습니다. 그렇지 않으면 지역 변수가 됩니다. 이것이 전역 변수를 선언하는 첫 번째 방법입니다.
웨이 2
테스트 = 5;
var를 사용하지 않고 식별자 test에 값을 직접 할당하면 암시적으로 전역 변수 test가 선언됩니다. 명령문이 함수 내에 있더라도 함수가 실행되면 test는 전역 변수가 됩니다.
방법 3
창.테스트;
window.test = 5; 이 메서드는 익명 함수가 실행된 후 일부 함수를 세상에 노출하는 데 자주 사용됩니다. JQuery1.5의 마지막 문장과 같은
window.jQuery = window.$ = jQuery;
그냥 변수 test를 사용한다면 세 가지 방법의 차이는 없을 것입니다. 예를 들어, 경고(테스트)에는 5가 표시됩니다. 그러나 경우에 따라 세 가지 방법 간에 차이가 있습니다. 위의 세 가지 방법으로 각각 a1, a2, a3 세 개의 변수를 선언합니다.
a1 = 11;
var a2 = 22;
window.a3 = 33;
1. 창문 안의 경우
for(창 내){
if(a=='a1'||a=='a2'||a=='a3'){
경고(a)
}
}
IE6/7/8/9: a3만 팝업되는데 이는 첫 번째와 두 번째 메서드를 통해 선언된 전역 변수를 for in window를 통해 얻을 수 없음을 나타냅니다.
Firefox/Chrome/Safari/Opera: a1, a2, a3이 모두 팝업되는데, 이는 세 가지 방법으로 선언된 전역 변수를 for in window를 통해 얻을 수 있음을 나타냅니다.
2.삭제
노력하다 {
경고(a1 삭제);
}catch(e){alert('a1을 삭제할 수 없습니다')}
노력하다{
경고(a2 삭제);
}catch(e){alert('a2를 삭제할 수 없습니다')}
노력하다{
경고(a3 삭제);
}catch(e){alert('a3을 삭제할 수 없습니다')}
결과는 다음과 같습니다
보시다시피,
1. 모든 브라우저에서 delete a2는 false입니다. 즉, var를 통해 선언된 변수는 삭제할 수 없으며, 모든 브라우저가 동일하게 동작합니다. 이는 Rhino 책에서도 언급됩니다.
2. window.a3을 통해 선언한 전역변수는 IE6/7/8에서는 삭제할 수 없으나, IE9/Firefox/Chrome/Safari/Opera에서는 삭제할 수 있습니다.
위 두 점에는 차이점이 있지만, 연산에 사용하면 둘 다 true를 반환합니다.
Alert(창 안의 'a1');//true
Alert(창 안의 'a2');//true
Alert(창 안의 'a3');//true
with를 사용하여 개체 창 닫기를 열면 모든 브라우저가 다음과 같이 동일하게 동작합니다.
(창){
만약(a1){
경고(a1);//11
}
만약(a2){
경고(a2);//22
}
만약(a3){
경고(a3);//33
}
}