[JS]7장 연산자

JH Cho·2022년 12월 11일
0

모던JS DeepDive 공부

목록 보기
7/27
post-thumbnail

모던JS딥다이브 공부 정리용 글입니다.

7_ 연산자

  • 연산자는 하나 이상의 표현식을 대상으로 연산을 통해 하나의 값을 만든다.
  • 이 때 연산의 대상을 피연산자라고 한다.
  • 산술 연산자
    5 * 4 // 20
  • 문자열 연결 연산자
    'My ' + 'precious' // My precious
  • 할당 연산자
    a = 'b'
  • 비교 연산자
    3 < 5 //true
  • 논리 연산자
    && ||
  • 타입 연산자
    typeof "골룸" // string

7.1_ 산술 연산자

  • 산술 연산자는 수학적 계산을 통해 새로운 숫자 값을 만든다.
  • 연산이 불가능 하면 NaN(Not a Number)를 반환

7.1.1_ 이항 산술 연산자

  • 이항 산술 연산자는 2개의 피연산자를 대상으로 연산하여 숫자 타입의 값을 만든다.

7.1.2_ 단항 산술 연산자

  • 단항 산술 연산자는 1개의 피연산자를 산술 연산하여 숫자 값을 만든다. (전위 / 후위 연산자)

7.1.3_ 문자열 연결 연산자

  • 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.

7.2_ 할당 연산자.

  • 할당 연산자는 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다.
  • 할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다.
x=y
x += y
x -= y
x *= y
x /= y
x %= y
---------
 var a, b,  c;

a = b = c = 0; 
//으론쪽에서 왼쪽으로 진행되면서 할당.

7.3_ 비교 연산자

  • 비교 연산자는 좌항과 우항의 피연산자를 비교한 다음 그 결과를 Boolean으로 반환한다.

7.3.1_ 동등/일치 비교 연산자

  • 동등 == / 부동등 !=

  • 일치 === / 불일치 !==

  • 동등은 암묵적 타입변환을 통해 타입을 일치시킨 후 같은 값인지 비교하기 때문에 지양하라.

  • NaN의 경우 유일하게 자기 자신과 일치하지 않는 값이다.

  • 따라서 isNaN()을 사용하라.

7.3.2_ 대소 관계 비교 연산자.

>
<
<=
>=

7.4_ 삼항 조건 연산자

  • 삼항 조건 연산자 표현식
1 === 1 ? "맞음" : "틀림"
  • if...else와 같지만 삼항 표현식은 표현식!
  • ifelse는 문이다.
  • 표현식은 값으로 사용 가능하지만
  • 표현식이 아닌 문은 값으로 사용 불가.

[7.5_ 논리연산자](https://poiemaweb.com/js-operator#:~:text=%23-,8.%20%EB%85%BC%EB%A6%AC%20%EC%97%B0%EC%82%B0%EC%9E%90,-%EB%85%BC%EB%A6%AC%20%EC%97%B0%EC%82%B0%EC%9E%90(Logical)

// 논리합(||) 연산자
true || true   // true
true || false  // true
false || true  // true
false || false // false

// 논리곱(&&) 연산자
true && true   // true
true && false  // false
false && true  // false
false && false // false

// 논리 부정(!) 연산자
!true  // false
!false // true


// 단축 평가
'Cat' && 'Dog' // “Dog”

'Cat' || 'Dog' // 'Cat'

7.6_ 쉼표 연산자

var x, y, z;

x=1, y=2, z=3 

console.log(x,y,z) // 1 2 3

7.7_ 그룹 연산자

10 * 2 + 3// 23
10 * (2 + 3) // 50

7.8_ typeof 연산자

typeof ''              // "string"
typeof 1               // "number"
typeof NaN             // "number"
typeof true            // "boolean"
typeof undefined       // "undefined"
typeof Symbol()        // "symbol"
typeof null            // "object"
typeof []              // "object"
typeof {}              // "object"
typeof new Date()      // "object"
typeof /test/gi        // "object"
typeof function () {}  // "function"

주의: null은 객체로 반환되는데 이것은 초기 버그이며 큰일날까봐 수정하고 있지 않음.
'==='을 사용해서 판단해라.

7.9_ 지수 연산자

2 ** 3 // 2의 3승

Math.pow(2, 2) // 2의 2승

//음수의 경우 괄호로 묶는다.

(-5) ** 2 // 25
  • 지수 연산자는 이항 연산자 중에서 우선순위가 가장 높다.

7.10_ 기타 연산자

?. 옵셔널 체이닝
?? null 병합연산자
delete 프로퍼티 삭제
new 생성자 함수 호출하여 인스턴스 생성
instanceof 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별
in 프로퍼티 존재 확인.

profile
주먹구구식은 버리고 Why & How를 고민하며 프로그래밍 하는 개발자가 되자!

0개의 댓글