[모던자바스크립트 딥다이브] 7장 연산자

zzzzzang_gu·2023년 2월 8일
0

자바스크립트

목록 보기
4/23

연산자란

연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산을 통해 하나의 값을 만든다. 이 때 연산의 대상을 피연산자라 한다.
피연산자는 연산의 대상이 되어야 하므로 값으로 평가할 수 있어야 한다. 연산자는 값으로 평가된 피연산자를 연산해 새로운 값을 만든다.


산술 연산자

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

  • 이항 산술 연산자 : '+', '-', '*', '%', '**'

    모든 이항 산술 연산자는 피연산자의 값을 변경하는 부수효과가 없다. 즉 피연산자의 값이 바뀌는 경우는 없고, 언제나 새로운 값을 만든다.


  • 단항 산술 연산자 : '++' , '--', '+', '-'

    증가/감소 (++,--) 연산자는 피연산자의 값을 변경하는 부수 효과가 있다.

var x= 1;

x++; // ++ , -- 연산자는 피연산자의 값을 변경하는 암묵적인 할당이 이뤄진다.
 
console.log(x) //2

'+' , '-' 단항 연산자는 숫자 타입이 아닌 피연산자에 단항 연산자를 사용할 경우 피연산자를 숫타 타입으로 변환하여 반환한다.

//문자열을 숫자로 타입 변환
var x = "10"  //String 

console.log(+x) // 10 Number

console.log(x) // "10" String -부수효과는 없다.

  • 문자열 연결 연산자

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

'1' + 2; // '12'

undefined + 1 // NaN
+undefined // NaN 

위 예제들을 보면 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는것을 볼 수 있다.
이를 암묵적 타입 변환 또는 타입 강제 변환이라고 한다.



할당 연산자

할당 연산자는 우항에 있는 피연산자의 평과 결과를 좌항에 있는 변수에 할당한다.
좌항의 변수에 값을 할당하므로 변수 값이 변하는 부수 효과가 있다.

할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다.


비교 연산자

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

  • 동등 비교 : ==
  • 일치 비교 : ===
  • 부동등 비교 : !=
  • 불일치 비교 : !==

동등 비교 연산자(==)는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 값이 같은지 비교한다.

일치 비교 연산자(===)는 좌항과 우항의 피연산자가 타입이 같고 값도 같은 경우에만 True를 반환한다.


5 == 5 // ture
5 == "5" // true
5 === "5" // false

//주의해야 할 항목
//NaN은 자신과 일치하지 않는 유일한 값.
NaN === NaN // false;

0 === -0 // true
0 == -0 // true

삼항 조건 연산자

불리언 타입의 값으로 평가될 표현식, 만약 조건의 평가 결과가 불리언 값이 아니라면 불리언 값으로 암묵적 타입 변환된다.

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


논리 연산자

  • ' || ' : 논리합(OR)
  • '&&' : 논리곱(AND)
  • ' ! ' : 부정(NOT)

논리 부정 연산자 : 언제나 불리언 값을 반환한다. 단, 피연산자가 불리언 값이 아니라면 불리언 타입으로 암묵적 타입 변환된다.

논리합( || ), 논리곱( && ) 연산자 : 평가 결과가 불리언 값이 아닐 수도 있다. 논리합 또는 논리곱 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다.

"Apple" && "Banana" // Banana
"Apple" || "Banana" // Apple

typeof 연산자

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

주의할 점

  • null은 typeof연산자로 연산하면 "object"를 반환한다. -> 자바스크립트 첫번째 버전의 버그
  • 선언하지 않은 식별자를 연산자로 연산하면 undefined를 반환

profile
프론트엔드 개발자가 되겠습니다🔥

0개의 댓글