07장 연산자

soyeon·2022년 1월 5일
0
post-thumbnail

07 연산자

  • 산술
  • 할당
  • 비교
  • 논리
  • 타입
  • 지수 연산

7.1 산술 연산자

수학적 계산을 수행합니다. 불가능한 경우 NaN을 반환합니다.

7.1.1 이항 산술 연산자

❗부수 효과(피연산자의 값을 변경)가 없습니다.

  • +: 덧셈
  • -: 뺄셈
  • *: 곱셈
  • /: 나눗셈
  • %: 나머지

7.1.2 단항 산술 연산자

1개의 피연산자를 연산합니다.

부수효과 있음

  • ++: 증가
  • --: 감소
var x = 1;
x++; // x=x+1=2
x--; // x=x-1=1

❗증가/감소 연산자는 위치에 의미가 있습니다.
``` javascript
var x = 5, result;

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

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

부수효과 없음

  • +:효과 없음
  • -:양수→음수, 음수→양수

❗ 숫자타입이 아닌 피연산자에 +나 - 단항연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환합니다.
피연산자를 변경하는 것은 아니고 변환한 값을 반환할 뿐입니다.
-단항 연산자는 거기에 반전까지 끼얹습니다.

7.1.3 문자열 연결 연산자

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

'1' + 2; // '12'

암묵적 타입 변환(타입 강제 변환)

개발자의 의도와는 상관없이 엔진에 의해 암묵적으로 타입이 자동 변환되는 경우가 있습니다.

// true가 1로 타입변경
1 + true; // 2

// false가 0으로 타입변경
1 + false; //1

// null은 0으로 변경
1 + null / 1

//undefined는 숫자 타입으로 변경이 안됩니다.
1 + undefined // NaN

7.2 할당 연산자

우항에 있는 피연산자(표현식)의 평가 결과를 좌항에 잇는 변에 할당합니다.

❗할당 연산자는 변수에 값을 할당하므로 부수효과가 있습니다.

var x=10;

x += 5 // x=x+5=15

x -= 5 // x=x-5=10

x *= 5 // x=x*5=50

x /= 5 // x=x/5=10

x %= 5 // x=x%5=0

//문자열 연결
var str = "my name is";
str +="Lee" // str = str + "Lee" = "my name is Lee"

7.3 비교 연산자

결과는... true/false 다...

7.3.1 동등/일치 비교 연산자

동등 비교 : 느슨한 비교(값만 비교) / 일치 비교 : 엄격한 비교(값, 타입까지 비교)

부수효과는 .... "없습니다"

  • ==(동등 비교) x와 y의 값이 같음
  • ===(일치 비교) x와 y의 값과 타입이 같음
  • != (부동등 비교) x와 y의 값이 다름
  • !== (불일치 비교) x와 y의 값과 타입이 다름

헷갈리니까 그냥 일치 비교 써

😨주의할 점!

❗NaN은 자신과 일치하지 않은 유일한 값입니다. 숫자가 NaN인지 궁금하면 Number.isNaN을 씁시다

❗양의 0과 음의 0을 비교하면 무조건 true로 나옵니다. Object.is를 씁시다.

7.4 삼항 조건 연산자

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

if...else문과의 차이!

삼항 조건 연산자를 사용한 문은 값으로 평가할 수 잇는 표현식입니다.
근데?? if..else문은 그냥 문입니다. 대신 가독성이 좋음

7.5 논리 연산자

  • || OR
  • && AND
  • ! NOT ※언제나 불리언 값을 반환

드 모르간의 법칙

링크

!(x || y) === (!x && !y)
!(x && y) === (!x || !y)

7.6 쉼표 연산자

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

var x,y,z;
x=1, y=2, z=3; //3

7.9 지수연산자

좌항은 밑으로, 우항은 지수로 거듭제곱
2 2; // 22 = 4
2
0; // 20 = 1

7.12 연산자 우선순위

1순위 : ()

이항 연산자 중 1등 : **

헷갈리니까 걍 () 그룹연산자만 알고 잇어

profile
공부중

0개의 댓글