ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [모던 자바스크립트 딥다이브/ 7 연산자]
    JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:48

    7 연산자

    7.1. 산술연산자

    산순연산이 불가능한 경우 NaN을 반환한다.

    숫자타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자타입으로 변환하여 반환한다

    • ‘+’ 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
    • ‘==’동등비교 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입변환을 통해 타입을 일치시킨후 같은 값인지 비교한다.
    • 때분에 동등비교연산자 대신 일치비교’===’ 연산자를 사용하는 것이 좋다. 일치비교 연ㅅ나자는 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한하여 true를 반환한다.
    • NaN은 자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 빌트인함수 isNaN을 사용한다.
    • // isNaN 함수는 지정한 값이 NaN인지 확인하고 그 결과를 불리언 값으로 반환한다. isNaN(NaN); // - true isNaN(10); // • false isNaN(1 + undefined); // 一 true
    • 자바스크립트는 양의 0과 음의 0이 있는데 이들을 비교하면 true를 반환한다.
      • 리액트에서 왜 삼항연산자를 쓰는지 고민해보기 *
    • Object.is 메서드 : 예측가능한 정확한 결과를 반환함.
    • -0 === +0 //true Objext.is(-0, +0) //false NaN === NaN; //false Object.is(NaN,NaN) //true
    • 논리 부정 (!) 연산자는 언제나 불리언값을 반환한다. 만약 피연산자가 불리언값이 아니면 불리언타입으로 암묵적 타입변환된다.
    • !0 //true !'Hello';//false
    • 논리합(||)또는 논리곱(&&) 연산자 표현식의 평가결과는 불리언값이 아닐 수도 있다. 논리합(||) 또는 논리곱(&&) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다.
    • 'Cat' && 'Dog' ; // ->'Dog'
    • 쉼표 연산자
      var x,y,z;
      
      x = 1, y = 2, z = 3;
      
    • 쉼표(,) 연산자는 왼쪽 피연산자부터 차례로 피연산자를 평가하고 마지막 연산자의 평가가 끝나면 마지막 피연산자의 평가결과를 반환한다.
    • 그룹 연산자는 연산자 우선순위가 가장 높다.
    • typeof 연산자는 피연산자의 데이터 타입을 문자열로 반환한다.
      • string
      • number
      • boolean
      • nudefined
      • symbol
      • object
      • function
      • null 을 반환하는 경우는 없으며, 함수의 경우 function을 반환한다. typeof 연산자가 반환하는 문자열은 7개의 데이터타입과 정확히 일치하지는 않는다.
      typeof null // → “object”
      
      • 따라서 값이 null타입인지 확인할 때는 typeof 연산자를 사용하지 말고 일치연산자(===)를 사용하자.
      • 선언하지 않은 식별자를 typeof연산자로 연산해보면 referenceError가 발생하지 않고 undefined를 반환한다.
      // undeclared식별자를 선언한 적이 없다.
      typeof undeclared; //undefined
      
    • 지수연산자
      • 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭제곱하여 숫자 값을 반환한다.
      2 ** 2; // -> 4
      2 ** 2.5 ; // -> 5.6568...
      2 ** 0 // -> 1
      2 ** -2 // -> 0.25
      
      • 지수 연산자는 다음과 같은 경우 Math.pow 메서드보다 가독성이 좋다.
      2 ** 2 ** 2; // ->16
      Math.pow(Math.pow(2,2),2) // ->16
      
      • 지수 연산자는 다른 산술 연산자와 마찬가지로 할당 연산자와 함께 사용할 수 있다.
      var num = 5;
      num **= 2; // -> 25
      
      //지수 연산자는 이항 연산자 중에서 우선순위가 가장 높다.
      2 * 5 ** 2 // -> 50
      
    • 연산자의 부수효과
      • 할당연산자(=), 증가/감소연산자(++/—), delete연산자는 부수효과가 있다.
      var x;
      // 할당 연산자는 변수 값이 변하는 부수 효과가 있다. 
      // 이는 x변수를 사용하는 다른 코드에 영향을 준다.
      
      x = 1;
      console.log(x); //1
      
      //증가 / 감소연산자(++/--)는 피연산자의 값을 변경하는 부수 효과가 있다.
      // 피연산자 x의 값이 재할당되어 변경된다. 이는 x 변수를 사용하는 다른코드에 영향을 준다.
      
      x++;
      console.log(X); //2
      
      var o = { a : 1 };
      
      // delete 연산자는 객체의 프로퍼티를 삭제하는 부수 효과가 있다. 
      // 이는 o 객체를 사용하는 다른 코드에 영향을 준다.
      
      delete o.a;
      console.log(o); //{}
      
    • 연산자는 종류가 많아서 연산자 우선순위를 모두 기억하기 어렵고 실수하기도 쉽다. 우선순위가 가장 높은 그룹 연산자를 사용하여 우선순위를 명시적으로 조절하는 것을 권장한다.
Designed by Tistory.