2009년 11월 25일 수요일

변수 (Varables)

변수 (Variables)
어플리케이션 내의 값들을 저장하기 위해 사용하는 상징적인 명칭을 변수라고 한다. 변수들의 이름들은 식별자라고도 불리며 어떠한 규칙을 따른다.

자바스크립트 식별자는 반드시 문자, underscore(_), 또는 달러 기호($)로 시작해야 하며, 후속 문자로는 숫자도 가능하다. 자바스크립트는 대소문자를 구분하며, 문자는 “A”에서 “Z”와 소문자 “a”에서 “z”까지 사용 가능하다.

자바스크립트 1.5에서부터 유니코드 문자를 사용할 수 있게 되었다. \uXXXX유니코드를 이용해서 아래와 같이 식별자로 사용할 수 있다.
Category
Unicode value
Name
Format name
White space values
\u0009
Tab


\u000B
Vertical Tab


\u000C
Form Feed


\u0020
Space

Line terminator values
\u000A
Line Feed


\u000D
Carriage Return

Additional Unicode escape sequence values
\u0008
Backspace


\u0009
Horizontal Tab


\u0022
Double Quote
"

\u0027
Single Quote
'

\u005C
Backslash
\

적합한 변수 명칭 예로는 board_hits, year1990, and_name 등이 있다.

변수 선언 (Declaring Variables)

2가지 방법으로 변수를 선언:
  • 키워드 var를 사용하는 경우. var x = 10. 이러한 방법은 local global 변수 선언 모두에 적용됨
  • 단순하게 값만을 할당하는 경우. x = 10. 항상 global 변수로 선언하게 되며, 정적 자바스크립트 경고(warning)를 발생. 이러한 변수 선언을 사용하지 말아야 함
변수 평가 (Evaluating Variables)
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();
}

Undefined 값은 논리연산자와 함께 사용되어질 경우에는 false와 같다. 예를 들면, myArray 요소에 값이 정의되지 않았기 때문에 false를 리턴해서 myFunction 함수를 실행하게 된다.

var myArray = new Array();
if (!myArray[0]) myFunction();

변수 값이 null 일 경우, null 값은 정수와 함께 사용될 경우 0이 되며 논리연산 영역에서 사용될 경우에는 false 값이 된다.

var n = null;
print(n * 32); // prints 0




변수 범위 (Variable Scope)
특정 함수 바깥에 선언된 변수를 global 변수라 하며, 현재의 document에서는 어떠한 다른 코드에서 선언된 변수를 호출할 수 있게 된다. 함수 내에 선언된 변수를 local 변수라 하며 이것은 해당 함수 내에서만 사용할 수 있다.

자바스크립트는 block statement scope를 가지고 있지 않으며, block 내의 로컬코드가 될 것이다. 아래의 코드 예에서 보듯이 if문의 조건이 false가 되면 0이 리턴 될 것이다.

if (condition) {
  var x = 5;
}
print(x ? x : 0);
자바스크립트에서는 변수를 선언하기 전에 변수를 참조하더라도 예외 발생 없이 사용이 가능하다.

print(x === undefined); // prints "true"
var x = 3;

전역 변수 (Global Variables)
전역 객체(global object)의 속성으로 전역 변수가 있다. 웹 페이지에서의 전역 객체는 window이며, window.xxxx 형태의 구문을 통해서 설정과 접근을 할 수 있게 된다.

2009년 11월 19일 목요일

자바스크립트에서의 값들(Values)



자바스크립트는 아래와 같은 값들이 있다.
  • Numbers - 10 또는 3.14159와 같은 숫자 
  • 논리값 - true 또는 false
  • 문자열(Strings) - "Hello" 와 같은 문자열
  • null - null은 비어 있는 값을 가리키며, 아무것도 들어 있지 않은 빈컵을 상상해보시라. 자바스크립트에서는 대소문자를 구분하며, null Null, NULL은 분명히 다름.
    • null String 연산에서는 null
    • 논리연산에서는 false
    • 수치연산에서는 0 으로 변환
  • undefined - 변수만 만들고 값을 할당하지 않은 상태. undefined null에 포함되지 않음
자바스크립트에서 data type은 명시적 선언을 해야 하는 것이 아니며, 특정한 형 선언 없이 사용가능하며, type의 변환이 자유롭다. 정수에서 실수 사이에 명확한 구분이 존재하지 않으며, 정수를 보관했던 변수에 문자를 할당 하거나 객체(Object)를 할당할 수도 있다.
그러나 Date 객체와 메소드를 이용해서 날짜를 이용할 수 있으며, 자바스크립트에서 객체와 함수(Function)은 또 다른 기본 엘리먼트가 된다.


Data Type 변환
자바스크립트는 동적인 형변환이 가능한 언어다. 이것의 의미는 특정 변수 선언에 특정 type 선언을 하지 않아도 된다는 것이다. 형변환은 스크립트 실행시에 자동으로 이루어진다.

var answer = 19;  
이후에 다른 타입의 값으로 할당할 수 있다.

answer = "고마버~~";

자바스크립트는 동적인 형변환 언어이기에 이러한 할당에 대해서 오류 메시지를 발생시키지 않는다. 서로 다른 type간의 연산도 가능하다.


x = "답은 " + 12 // returns "답은 12"
y = 12 + " 가 답이다" // returns "12 가 답이다"
스트링타입의 숫자와 수치간의 연산은 좀 다른 결과를 보여준다.
"12" - 2 // returns 10
"12" + 2 // returns "122"