자바스크립트
자바스크립트 연산자 (1)
인지용
2021. 9. 23. 00:21
연산의 대상을 피연산자라 한다.
피연산자는 값으로 평가될 수 있는 표현식이어야 한다.
즉 값이 있는 변수이거나, 함수여도 리턴 값이 있는 함수여야 함
+ 연산자
문자열 ‘1’ 앞에다가 + 하면
숫자 타입으로 변환하여 반환한다.
( 문자열을 숫자로 변환할 수 없을 땐 NaN을 반환 )
이때 피연산자를 변경하는 것은 아니고
숫자 타입으로 변환한 값을 생성해서 반환한다
1 + true를 연산하면 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환돼서
true를 숫자 타입인 1로 강제 변환시킨 후 계산한다.
이를 암묵적 타입 변환 or 타입 강제 변환이라고 한다.
동등 비교(==) 연산자와 일치 비교(===) 연산자
동등 비교(==) 연산자는
비교할 때 암묵적 타입 변환을 통해
타입을 일치시킨 후 같은 값인지 비교.
단점 : 편리한 경우도 있지만 결과를 예측하기 어렵다
일치 비교(===) 연산자는
타입도 같고 값도 같은 경우에만 true를 반환한다.
따라서 예측하기 쉽다.
하지만
0 === -0 // true
0 == -0 // true
이런 결과가 나오기 때문에
정확한 비교 결과를 원하면
ES6에서 도입된 Object.is 메서드를 사용하는 게 좋다.
Object.is(0, -0) // false
IsNaN 함수
NaN은 자신과 일치하지 않는 유일한 값이다.(NaN == NaN -> false)
따라서 숫자가 NaN인지 확인하려면
빌트인 함수 isNaN을 사용한다. isNaN(NaN);
isNaN(NaN, NaN); // true
Object.is 함수도 사용가능
Object.is(NaN, NaN); // true
출처 : 모던 자바스크립트 Deep dive