본문 바로가기
Development/Javascript

[펌] 자바스크립트 정리. 4 - 자바스크립트 연산자

by Dev. Jkun 2013. 1. 21.
반응형

검색엔진을 뒤지면서 보다가 너무나 깔끔하게 정리된

자바스크립트가 있기에 퍼옴. 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. [] 연산자

        - 배열 원소에 접근할수 있게 해준다       

            --> 숫자일 경우

        - 객체의 프로퍼티에 접근할 수 있게 해준다   

            --> 객체의 프로퍼티 이름에 해당하는 문자열로 평가되는 표현식일 경우

반응형

댓글