728x90
728x90
자바스크립트의 연산자는 C계열의 언어를 학습했다면 산술, 할당, 비교, 논리, 타입 연산 등이 유사하기 때문에 크게 다르지 않다.
자바스크립트의 연산자만이 가지는 몇가지 다른점이 있다.
암묵적 타입 변환
자바스크립트 엔진은 표현식을 평가할 때 문맥(Context)를 고려하여 암묵적 타입 변환을 실행한다.
"1" + 2 // 12
2 * "10" // 20
!0 // true
표현식을 평가할 때 문맥에 맞지 않은 상황이 발생할 수 있는데 자바스크립트 엔진은 가급적 에러를 발생시키지 않도록 암묵적으로 타입을 변환한다.
동등 비교 연산자와 일치 비교 연산자
비교 연산자에는 ==(동등 비교)와 ===(일치 비교)가 있다.
동등 비교 연산자는 좌항과 우항의 피연산자를 비교할 때 암묵적 타입 변환을 통해 타입을 일치 시킨 후 같은 값을 가지는지 비교하고 일치 비교 연산자는 좌항과 우항의 피연산자의 타입과 값을 모두 비교한다.
//동등 비교
1 == 1 //true
1 == "1" //true
//일치 비교
1 === 1 //true
1 === "1" //false
또한 동등 비교는 값을 비교하고 일치 비교는 값과 주소값을 모두 비교한다고 생각할 수도 있다.
var x = 1;
var y =1;
console.log(x==y); // true
console.log(x===y); // true
x와 y의 값은 같기때문에 x==y는 true인 것이 자명하지만 x와 y는 각각 새로운 box를 생성해서 다른 주소값을 참조해야 할 것 같지만 그렇지가 않다.
상수 값을 boxing 할 때는 생성된 값은 다시 만들지 않기 때문이다. 따라서 상수를 새롭게 boxing하기 위해서는 new 연산자를 사용한다.
var x = 1;
var y =new Number(1);
console.log(x==y); // true
console.log(x===y); // false
728x90
반응형
'Frontend > JavaScript' 카테고리의 다른 글
자바스크립트 object 객체 (0) | 2023.03.21 |
---|---|
자바스크립트 Array 객체 (0) | 2023.03.19 |
자바스크립트 데이터 타입과 변수 (0) | 2023.03.14 |
자바스크립트 개발 환경 설정 (0) | 2023.03.13 |
자바스크립트의 탄생 배경 (0) | 2023.03.12 |
댓글