이 게시물은 자바스크립트 완벽가이드 6판의 예제를 중심으로 따라갑니다. 또한 자바스크립트 완벽가이드 6판을 참조하여 개인 공부용으로 작성한 압축판임을 알립니다. 예제 중심으로 보실 분은 Non Required를 건너뛰셔도 무방합니다.
#1. 자바스크립트 소개
#2. 자바스크립트 문법(Non Required)
#3. 자바스크립트 데이타 타입(Non Required)
#4. 자바스크립트 변수 (Non Required)
#2. 자바스크립트 문법(Non Required)
#3. 자바스크립트 데이타 타입(Non Required)
#4. 자바스크립트 변수 (Non Required)
표현식(Expression)
표현식은 특정한 규칙을 가진 문자열의 집합을 표현하고 사용하는 형식 언어입니다. Perl은 언어 자체의 강력한 정규 표현식을 구현하고 있기 때문에 많은 부분을 Perl을 바탕으로 한 자바스크립트 또한 비슷한 표현식을 가지고 있습니다.(사실 C, C++, Java 등의 언어는 비슷한 표현식을 가집니다.)
간단한 표현식의 예로는 리터럴과 변수가 있습니다. 리터럴은 그 자체로 값이 되며, 변수는 그 변수가 저장하거나(기본 타입) 참조하는(참조 타입) 값입니다. (<#4. 자바스크립트 변수> 참조) 또한 이러한 표현식의 조합도 표현식으로 인식됩니다.
연산자(Operator)
연산자는 어떤 요소에 작용해 그 요소를 다른 요소로 변형시키는 일종의 함수입니다.
산술 연산자
덧셈(+) 연산자는 숫자 타입 피연산자의 덧샘이나 문자열 타입 피연산자의 이어 붙이기에 사용됩니다.
뺄셈(-) 연산자는 2항 연산자로 쓰일 경우 첫 번째 피연산자에서 두 번째 피연산자를 빼는데 사용됩니다.
곱셈(*) 연산자는 두 피연산자를 곱하는데 사용됩니다.
나눗셈(/) 연산자는 첫 번째 피연산자를 두 번째 피 연산자로 나눕니다. 특이할 점은 자바스크립트는 모든 수를 실수로 다루기 때문에 (정수)/(정수)가 부동소수점을 가지는 경우 반올림 혹은 버림이 아닌 부동소수점을 가지는 실수로 결과값을 나타낸다는 것입니다. 또한, 0으로 나누는 연산은 양 혹은 음의 무한대가 되며, 0/0은 NaN이 됩니다.
나머지(%) 연산자는 첫 번째 피연산자에 대한 두 번째 피연산자의 나머지 연산을 수행합니다. 결과의 부호는 첫 번째 피연산자의 부호와 동일하며, 부동소수점 값에 대해서도 적용할 수 있습니다. (예: -4.3 % 2.1 = -0.1)
마이너스(-) 뺄셈 연산자가 단항 연산자로 피연산자 앞에 쓰이면 단항 부정을 수행합니다.
플러스(+) 덧셈 연산자가 단항 연산자로 피연산자 앞에 쓰이면 부호를 명시적으로 지정하는 역할을 합니다. 피연산자가 숫자가 아닌경우 변환을 시도하며 변환되지 않을 경우 NaN을 반환합니다.
증가(++) 연산자는 단항 피연산자에 대해 1을 더하는 증가 연산을 수행합니다. 피연산자 앞에 위치할 경우, 전치증가(pre-increment)를 수행하여 피연산자를 증가시킨 후 나머지 작업을 진행하며, 피연산자 뒤에 위치할 경우, 후치증가(post-increment)를 수행하여 나머지 작업을 진행한 다음 피연산자를 증가시킵니다. 제어문에서 주로 사용하게 됩니다.
감소(--) 연산자는 증가 연산자와 비슷한 기능을 수행하며 1을 빼는 연산을 수행합니다.
곱셈(*) 연산자는 두 피연산자를 곱하는데 사용됩니다.
나눗셈(/) 연산자는 첫 번째 피연산자를 두 번째 피 연산자로 나눕니다. 특이할 점은 자바스크립트는 모든 수를 실수로 다루기 때문에 (정수)/(정수)가 부동소수점을 가지는 경우 반올림 혹은 버림이 아닌 부동소수점을 가지는 실수로 결과값을 나타낸다는 것입니다. 또한, 0으로 나누는 연산은 양 혹은 음의 무한대가 되며, 0/0은 NaN이 됩니다.
나머지(%) 연산자는 첫 번째 피연산자에 대한 두 번째 피연산자의 나머지 연산을 수행합니다. 결과의 부호는 첫 번째 피연산자의 부호와 동일하며, 부동소수점 값에 대해서도 적용할 수 있습니다. (예: -4.3 % 2.1 = -0.1)
마이너스(-) 뺄셈 연산자가 단항 연산자로 피연산자 앞에 쓰이면 단항 부정을 수행합니다.
플러스(+) 덧셈 연산자가 단항 연산자로 피연산자 앞에 쓰이면 부호를 명시적으로 지정하는 역할을 합니다. 피연산자가 숫자가 아닌경우 변환을 시도하며 변환되지 않을 경우 NaN을 반환합니다.
증가(++) 연산자는 단항 피연산자에 대해 1을 더하는 증가 연산을 수행합니다. 피연산자 앞에 위치할 경우, 전치증가(pre-increment)를 수행하여 피연산자를 증가시킨 후 나머지 작업을 진행하며, 피연산자 뒤에 위치할 경우, 후치증가(post-increment)를 수행하여 나머지 작업을 진행한 다음 피연산자를 증가시킵니다. 제어문에서 주로 사용하게 됩니다.
감소(--) 연산자는 증가 연산자와 비슷한 기능을 수행하며 1을 빼는 연산을 수행합니다.
동등 연산자
동등(==) 연산자는 두 값이 같은지 확인하는데 쓰입니다. 피연산자의 타입을 고려하지 않고 주어진 피연사자들이 같으면 true를, 다르면 false를 반환합니다.
일치(===) 연산자도 역시 두 값이 같은지 확인하는데 쓰입니다. 피연산자의 타입을 고려하지 않는다는 점에서 동등 연산자와 동일하지만, 동등 (==) 연산자와는 다르게 타입까지 일치하여야 true를 반환합니다. 또한, NaN값은 어느 값과도 일치하지 않기 때문에 NaN이 피연산자 중 하나라도 포함된다면 언제나 false를 반환합니다.
여기서의 '같다'라는 말이 혼동을 줄 수 있는데, 문자열을 포함한 기본 타입에서는 값을 비교하며, 참조 타입의 변수의 비교는 같은 객체를 참조하는지를 비교합니다. (기본 타입과 참조 타입의 차이는 <#3. 자바스크립트 데이타 타입>에서 확인 할 수 있습니다.)
부등(!=) 연산자는 동등(==) 연산자의 반대 기능을 수행합니다.
불일치(!==) 연산자는 일치(===) 연산자와 반대 기능을 수행합니다.
불일치(!==) 연산자는 일치(===) 연산자와 반대 기능을 수행합니다.
관계 연산자
작다(<) 연산자는 첫 번째 피연산자가 두 번째 피연산자보다 작으면 true를 반환합니다.
크다(>) 연산자는 작다(<) 연산자와 반대의 기능을 수행합니다.
작거나 같다(<=) 연산자는 첫 번째 피연산자가 두번째 피연산자보다 작거나 같으면 true를 반환합니다.
크거나 같다(>=) 연산자는 작거나 같다(<=) 연산자와 반대의 기능을 수행합니다.
비교 연산 중, NaN이 나타나는 경우 무조건 false를 반환합니다. 또한 문자열의 비교에서는 대문자가 소문자보다 항상 작다는 것을 기억해 두시는 것이 좋습니다.
in 연산자는 좌변의 피연산자로 문자열을 받아 우변의 피연산자의 Property 이름에 해당할 경우 true를 반환합니다.
- var point = {x:1, y:1}
- var has_x_coord = "x" in point; // true
- var has_y_coord = "y" in point; // true
- var has_z_coord = "z" in point; // false
- var ts = "toString" in point; // true
코드를 분석해 보면, 첫째 줄에서 객체를 정의하였고, 2,3,4 줄의 코드의 결과는 당연하게 보입니다. 5번째 줄의 결과값이 true가 나오는 이유는 point자체가 객체이고 자바스크립트에서는 변환이 자동으로 진행되기 때문에 객체에서 toString 프로퍼티를 갖고 있기때문에 true가 반환됩니다.
instanceof 연산자는 좌변의 피연산자로 객체로, 우변의 피연산자로 객체 클래스의 이름을 받아 좌변의 객체가 우변 클래스의 인스턴스일 경우 true를 반환합니다. 모든 객체는 Object의 인스턴스입니다..
좌변 피연산자가 객체가 아니거나 우변 피연산자가 생성자 함수에 포함되지 않은 객체라면 instanceof는 false를 반환하지만, 우변 피연산자가 아예 객체가 아닌 경우에는 런타임 에러를 발생시킵니다.
instanceof 연산자는 좌변의 피연산자로 객체로, 우변의 피연산자로 객체 클래스의 이름을 받아 좌변의 객체가 우변 클래스의 인스턴스일 경우 true를 반환합니다. 모든 객체는 Object의 인스턴스입니다..
- var d = new Date();
- d instanceof Date; // true
- d instanceof Object; // true
- d instanceof Number; // false
- var a = [1, 2, 3];
- a instanceof Array; // true;
- a instanceof Object; // true;
- a instanceof RegExp; // false;
문자열 연산자
<,>=,>,>=, ==, != 연산자 등은 문자열에서 정상적으로 작동합니다. 그러나 + 연산자는 숫자 피연산자보다는 문자열 피연산자에 우선권을 부여한다는 점에 주의하면 됩니다.
논리 연산자
논리연산자는 Boolean을 다루게 되며, 제어문에서 조건을 위해 사용됩니다. &&(AND), ||(OR), !(NOT) 연산자가 있습니다.
비트 연산자
&, |, ^, ~ 의 비트연산자는 비트 단위에서 논리 연산자와 비슷한 역할을, <<,<,>,>> 연산자는 왼쪽 혹은 오른쪽으로 비트를 이동할때 사용합니다.
기타 연산자
tyeof 연산자는 피연산자의 데이타 타입을 가리키는 문자열입니다.다.
new연산자는 새로운 객체를 생성하고 이를 초기화하기 위한 생성자 함수를 호출합니다.
delete연산자는 피연산자의 삭제를 시도하며, 성공시 true를 반환합니다.
댓글 없음:
댓글 쓰기