Skip to content

Latest commit

 

History

History
212 lines (147 loc) · 4.82 KB

07_Operator.md

File metadata and controls

212 lines (147 loc) · 4.82 KB

07장 연산자

  • 연산자
    • 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산등을 수행해 하나의 값을 만든다.

7.1 산술 연산자

산술 연산자는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우, NaN을 반환한다.

7.1.1 이항 산술 연산자

2개의 피연산자

5+2;
5-2;
5*2;
5/2;
5%2

7.1.2 단항 산술 연산자

봐야 할것은 두 가지

  1. 증가/감소 연산자
  2. +,-연산자의 타입변환
//1.증가/감소 연산자

var x = 5, result;

// 선할당 후증가
result = x++;
console.log(result, x);// 5 6

// 선증가 후할당
result = ++x;
console.log(result, x);// 7 7
//2. +/-연산자의 타입변환
var x = '1'

console.log(+x);//1
console.log(x);//'1'

//boolean
x = true;
console.log(+x); //1
x = false;
console.log(+x);//0

//string은 타입 변환이 어려움으로 NaN을 반환한다.
x = 'Hello'
colsole.log(+x); // NaN

7.1.3 문자열 연결 연산자

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

'1' + 2; // '12'
1 + '2'; // '12'

7.2 할당 연산자

할당 연산자는 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다.

var x;

x = 10; //10
x += 5; //15
x -= 5; //10
x *= 5; //50
x /= 5; //10
x %= 5; //0

var str = 'My name is';

//문자열 연결 연산자
str += 'Lee'; //'My name is Lee'

7.3 비교 연산자

비교 연산자는 좌항과 우항의 피연산자를 비교한 다음 그 결과를 불리언 값으로 반환한다.

7.3.1 동등/일치 비교 연산자

동등 비교는 암묵적 타입 변환을 통해 타입을 일치 시킨후 같은 값인지 비교한다. 그에 비해 일치 비교는 값과 타입을 모두 비교한다.

5 == '5'// true
5 === '5' // false

일치 비교에서 NaN은 자신과 일치하지 않은 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 빌트인 함수 Number.isNaN을 사용해야 한다.

7.3.2 대소 관계 비교 연산자

대소 관계 비교 연산자는 피연산자의 크기를 비교하여 불리언 값을 반환한다.

5 > 0;
5 > 5;
5 >= 5;
5 <= 5;

7.4 삼항 조건 연산자

조건식 ? 조건식이 true일 때 반환할 값: 조건식이 false일 때 반환할 값

삼항 조건 연산자 표현식은 값으로 평가할 수 있는 표현식인 문이다.

var x = 10;

var result = x%2 ? '홀수' : '짝수';

7.5 논리 연산자

논리 연산자는 우항과 자황의 피연산자를 논리 연산한다.

true || true; //논리합
true && false //논리곱
!true // 논리 부정

암묵적 타입 변환이 적용된다.

!0; //true
!'Hello'; //false

7.6 쉼표 연산자

쉼표(,) 연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.

7.7 그룹 연산자

소괄호('()')로 피연산자를 감싸는 그룹 연산자는 자신의 피연산자인 표현식을 가장 먼저 평가한다.

7.8 typeof 연산자

typeof 연산자는 피연산자의 데이터 타입을 문자열로 반환한다.

  • string
  • number
  • boolean
  • undefined
  • symbol
  • object
  • function

선언되지 않은 식별자를 typeof 연산자로 연산해 보면 ReferenceError가 발생하지 않고 undefined를 반환한다.

7.9 지수 연산자

2 ** 2; // 2^2 = 4
Math.pow(2,2) // 4
-5 ** 2; // Error ()가 필요하다
(-5) ** 2 // 25

7.10 그 외의 연산자

각 장에서 설명

7.11 연산자의 부수 효과

다른 코드에 영향을 주는 부수 효과가 있는 연산자는 할당 연산자(=), 증가/감소 연산자(++/--), delete 연산자이다.

7.12 연산자 우선순위

연산자가 실행되는 순서를 우선순위라고 한다. 우선순위가 높을 수록 먼저 실행된다.

  1. ()
  2. new(매개변수 존재), ., [](프로퍼티 접근), ()(함수 호출), ?(옵셔널 체이닝 연산자)
  3. new(매개변수 미존재)
  4. x++, x--
  5. !x, +x, -x, ++x, --x, typeof, delete
  6. **
  7. *,/,%
  8. +,-
  9. <,<=,>,>=,in,instanceof
  10. ==, !=, ===, !==
  11. ??(null 병합 연산자)
  12. &&
  13. ||
  14. ? ... : ...
  15. 할당 연산자
  16. ,

7.13 연산자 결합 순서

연산자 결합 순서란 연산자의 어느 쪽부터 평가를 수행 할 것인지를 나타내는 순서를 말한다.

  • 좌항 -> 우항
    • +, -, /, % , 비교연산자, 논리 연산자, . , [], ??, ? . ,in, instanceof
  • 우항 -> 좌항
    • ++, --, 할당 연산자, !x, +x, -x, ++x, --x, typeof ,delete, ? ... : ..., **