[모던 자바스크립트 Deep Dive] 7장. 연산자

Benza·2022년 10월 13일
0

산술, 논리 연산자 뿐 아니라 쉼표 연산자, 그룹 연산자 등도 연산자임을 인지하고 유심히 살펴보자.

7.1. 산술 연산자

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

123 + '' // '123'

+'123' // 123

1 + null // 1

1 + undefined // NaN (undefined는 숫자로 타입 변환 되지 않는다.)

7.2. 할당 연산자

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

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

7.3. 비교연산자

동등비교 연산자 ==: 타입 변환을 해서 같은 값인지 비교
일치비교 연산자 ===: 값과 데이터 타입도 함께 비교

주의

NaN === NaN // false

Number.isNan(NaN) // true

Object.is(NaN, NaN) // true

isNaN(undefined) // true
isNaN(null) // false
isNaN(-NaN) // true
isNaN({}) // true

Number.isNaN(undefined) // false

일치 비교연산자를 사용해도 항상 같지 않다.
그러므로 Number.isNaN이나 Object.is 메소드를 사용한다.

7.4. 삼항 조건 연산자

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

if ... else문과 삼항 조건 연산자 표현식이 비슷해보이나 차이가 있다.
삼항 연산자는 표현식이기 때문에 값처럼 사용할 수 있다. 그라나if ... else문은 그렇지 않다.

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

7.5. 논리 연산자

논리 연산자의미부수 효과
II논리합(or)X
&&논리곱(and)X
!부정(NOT)X

9.4절 단출 평가에서 자세히

// 드 모르간 법칙
!(x || y) === (!x && !y)
!(x && y) === (!x || !y)

7.6. 쉼표 연산자

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

function foo() {
  	var x, y;
	return x = 1, y = 2, console.log(x), console.log(x*y), x+y // 3
}
foo()
1
2
<-3 // 마지막 피연산자의 평가 결과 반환

7.8. typeof 연산자

typeof NaN // number
typeof null // object

옵셔널체이닝 연산자, null 병합 연산자, delete연산자, new연산자. instanceof 연산자, in 연산자는 추후 자세히

7.11. 연산자의 부수 효과

부수효과가 있는 연산자
할당 연산자, 증가/감소 연산자, delete 연산자

profile
Understanding the impression

0개의 댓글