[펌] 자바스크립트 정리. 4 - 자바스크립트 연산자
검색엔진을 뒤지면서 보다가 너무나 깔끔하게 정리된
자바스크립트가 있기에 퍼옴. GENERAL 님의 정리 감사합니다.
댓글은 아래 링크에 달아주시기 바랍니다.
링크 : http://blog.naver.com/minis24/80094251902
* 자바스크립트를 공부하면서 노트에 정리해 놓은 내용을 보기 편하고, 효율적으로 검색하기 위해
블로그에 올리고 있습니다.
* 괜찮게 생각했던 내용과 메서드나,프로퍼티등의 인덱스가 있었으면 해서 정리한 거라서
아주 기초적인 내용은 없을지도 모르겠네요. ^^
* 오늘은 자바스크립트 연산자와 관련된 내용입니다.
* 자바스크립트 연산자
1. in
좌변 --> 문자열
우변 --> 객체 or 배열
좌변의 값이 우변객체의 프로퍼티의 이름이면 true 리턴
2. instanceof
좌변 --> 객체
우변 --> 클래스 이름
좌변의 객체가 우변 클래스의 인스탄스 이면 true 리턴
3. typeof
피연산자 앞에 쓰임, 피연산자의 데이타 타입을 가리키는 다음과 같은 문자열 리턴
- 숫자 : "number"
- 문자 : "String"
- 불리언 : "boolean"
- 객체 ,배열 , null : "object"
- 함수 : "function"
- 정의되지 않은 피연산자 : "undefined"
- Numberm ,String ,Boolean 등의 Wrapper 객체 : "object"
피연산자를 obj 라고 하면 다음처럼 두가지 방식으로 사용하는 것이 가능하다.
typeof obj
typeof (obj)
※ 모든 객체와 배열 타입에 대해서 "object" 를 리턴하므로 객체를 다른 기본타입과 구분하는
용도로 사용할 수 있다.
4. || 연산자 (★★★중요)
(1) || 연산자가 불리언 피연산자에 쓰일경우 OR 연산자로 수행함
--> 둘다 true,둘중하나 true 이면 true 리턴
(2) 첫번째 피연산자(좌측)를 평가하여 true 로 변환될 수 있으면, 변환되지 않은
원래의 좌변을 리턴(좌변의 표현식을 리턴함)
만약 그 외의 경우 두번째 피연산자(우변)을 평가하여 표현식의 값을 리턴한다.
※ 관용적인 용법
이연산자의 반환값이 불리언타입이 아니라는 점을 사용하여 불리언 타입이 아닌
피연산자를 || 연산자에 사용한다.
여러값중 정의 되어 있으면서 null 이 아닌 최초로 나오는 값을 택하는 방법에 많이
쓰인다.
var max = max_width || preference.max_width || 500 ;
// max_width 가 정의 되어 있으면 사용,
// 그외의 경우 preference 객체에 속한 값을 사용한다.
//그것도 없으면 하드코딩된 상수 500을 사용한다.
5. new 연산자
- 새로운 객체를 생성하고 이를 초기화 하기 위한 생성자 함수를 호출한다.
- 객체 생성후 지정된 생성자 함수를 호출하여 명시된 전달인자를 전달하고,
방금 생성된 객체도 this 키워드로 전달한다.
※부연설명
아무 프로퍼티도 없는 새로운 객체를 생성 한 후 생성된 객체의 프로토타입을 설정한다.
new 연산자 뒤에 있는 함수를 호출하고 this 키워드가 새로 생성된 객체를 가리키게 한다.
이 때 생성된 객체는 자신이 만들어낸 생성자의 프로토타입객체의 프로퍼티 값을
자신의 프로퍼티로 설정한다.
이 때문에 모든 함수에는 prototype 이라는 프로퍼티가 존재한다.
※ 생성자
- new 연산자와 함께 사용되도록 설계된 함수라고 한다.
- 생성자는 새로운 객체를 초기화 하고 객체에 있는 프로퍼티중에서 사용되기전에
미리 값이 할당되어야 하는 프로퍼티들의 초기값을 할당 한다.
- 생성자는 객체들의 클래스를 정의한다.
- 생성자는 일반적으로 리턴 값이 없이 this 키워드가 가리키는 객체들을 초기화
시키는 역할을 한다.
- 생성자 함수에서 결과값으로 객체를 리턴하면, 리턴값을 가질 수 있으며, new 문장의
결과 값이 된다. 이때, this가 가리키던 객체는 폐기 된다.
- 아래 처럼 적절한 생성자 함수를 정의하는 방법으로 객체들의 클래스를 만들수 있다.
function Rectangle( w , h ) {
this.width = w ;
this.height = h ;
}
var rect1 = new Rectangle( 2 , 4 ) ;
var rect2 = new Rectangle( 5 , 3 ) ;
// rect1 = { width : 2 , height : 4 } ;
6. delete 연산자
- 암묵적으로 선언된 변수를 삭제할 수 있다.(삭제하려고 시도한다는 표현이 맞겠네요)
- 피연산자로 지정된 객체의 프로퍼티,배열의 원소,변수(변수도 해당하는 객체의 프로퍼티임)
의 삭제를 시도한다.
- 성공적으로 삭제하면 true 리턴
삭제될수 없는 경우 false 리턴
- 존재하지 않는 프로퍼티를 삭제하려고 시도하면 true 리턴
ex )
var obj = { x : 1 , y : 2 };
delete obj.x ; // true
typeof obj.x ; // undefined
delete obj.x ; // true (존재하지 않는 프로퍼티 삭제니까...)
delete obj ; // false (var 로 선언된 변수는 삭제못함..)
delete 3 ; // false (정수도 삭제 못함)
7. void 연산자
피연산자의 값을 무시하고 무조건 undefined 리턴함.
8. [] 연산자
- 배열 원소에 접근할수 있게 해준다
--> 숫자일 경우
- 객체의 프로퍼티에 접근할 수 있게 해준다
--> 객체의 프로퍼티 이름에 해당하는 문자열로 평가되는 표현식일 경우