변수
우리는 프로그램 내에서 값에 이름을 부여하기 위해서 변수를 사용할 수 있습니다. 변수의 이름은 "식별자(identifier)"라고 불리며, 몇 가지 규칙을 따라야 합니다.
JavaScript 의 식별자는 문자(letter)나 밑줄(_)이나 달러 기호($)로 시작해야 합니다. 그 뒤에는 숫자(0-9)도 올 수 있습니다. JavaScript는 대소문자를 구별하기 때문에, 문자는 대문자 "A"부터 "Z"까지와 소문자 "a"부터 "z"까지를 사용할 수 있습니다.
JavaScript 1.5부터, 식별자에 å나 ü같은 ISO 8859-1이나 유니코드 문자를 사용할 수 있습니다. 또한 유니코드 이스케이프 시퀀스 페이지에 나열된 \uXXXX 형식 유니코드 이스케이프 시퀀스를 식별자에 쓸 수도 있습니다.
규칙에 맞는 이름 몇 가지는 이런 것입니다. Number_hits
, temp99
, _name
.
변수 선언
변수를 선언하는 방법에는 두 가지가 있습니다.
- var 키워드를 이용하는 방법. 예를 들면
var x = 42
같은 식입니다. 이 문법은 지역, 전역 변수를 선언하는데 모두 사용할 수 있습니다. - 그냥 값을 대입하는 방법.
x = 42
같은 식입니다. 이 방법은 항상 전역 변수를 선언하고, strict JavaScript 경고를 냅니다. 이 방법은 절대 사용하지 맙시다.
변수를 평가하기(Evaluating)
초기값을 지정하지 않고 var
문장을 이용해서 선언한 변수는 undefined라는 값을 갖습니다.
선언하지 않은 변수에 접근하려고 하면 ReferenceError 예외가 발생합니다.
var a; print("The value of a is " + a); // prints "The value of a is undefined" print("The value of b is " + b); // throws ReferenceError exception
변수가 값을 갖고 있는지 결정하기 위해서 undefined
를 사용할 수 있습니다. 다음 코드에서 input
에는 값을 할당하지 않아서 if
문은 true
로 평가됩니다.
var input; if(input === undefined){ doThis(); } else { doThat(); }
Not sure how the following is related to "Variables" section
undefined
값을 참/거짓을 판별하는 구문에 쓰면 false
로 평가됩니다. 예를 들어 다음 코드에서는 myArray
의 원소가 정의되지 않았기 때문에 myFunction
함수가 실행됩니다.
myArray=new Array() if (!myArray[0]) myFunction();
숫자가 필요한 문맥에서 null 변수를 평가하면 null 값은 0으로 평가되고, 참/거짓이 필요한 문맥에서는 false로 평가됩니다. When you evaluate a null variable, the null value behaves as 0 in numeric contexts and as false in boolean contexts. For example:
var n = null; n * 32; //0을 반환합니다
변수 범위
함 수 외부에서 선언한 변수는 "전역(global)" 변수라고 부릅니다. 그 변수는 현재 문서의 모든 코드에서 접근할 수 있기 때문입니다. 함수 안에서 선언한 변수는 "지역(local)" 변수라고 부릅니다. 그 변수는 함수 안에서만 접근할 수 있기 때문입니다.
JavaScript에는 블록 문장 범위가 없습니다. 대신 그 블록이 포함된 코드의 지역 범위에 포함됩니다. 예를 들어 다음 코드에서는 condition
이 false
이면 예외를 발생시키는 대신 0을 출력합니다.
if (condition) { var x = 5; } print(x ? x : 0);
JavaScript의 변수와 관련해서 또다른 색다른 점은 나중에 선언될 변수에 예외 발생없이 접근할 수 있다는 것입니다.
print(x === undefined); // prints "true" var x = 3;
전역 변수
need links to pages discussing scope chains and the global object
전역 변수는, 실제로는 "전역 개체(global object)"의 속성(property)입니다. 웹 페이지에서 전역 개체는 window이므로, window.variable
문장을 이용해서 전역 변수에 접근할 수 있습니다.
그러므로, window나 frame 이름을 이용하면 다른 window나 frame에 정의된 전역 변수에 접근할 수 있습니다. 예를 들어 phoneNumber
라는 변수를 FRAMESET
문서에 정의했다면, 자식 frame에서 parent.phoneNumber
로 그 변수에 접근할 수 있습니다.