피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자값을 만든다.
만약, 산술 연산이 불가능하다면 NaN을 반환.
+ 더하기 - 빼기 * 곱하기 / 나누기 % 나머지
++ 증가 -- 감소 + 양수는 양수로 음수는 음수로 반환 +(10) +(-10) - 양수는 음수로 음수는 양수로 반환 -(10) -(-10)
숫자타입이 아닌 피연산자에 단항 산술 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.
var x = '1';
console.log(+x); //1
console.log(-x); //-1
x='Hello';
//문자열을 숫자로 타입 변환할 수 없으므로 NaN반환
console.log(+x);//NaN
console.log(++x);//NaN
+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
== 동등 비교 x==y, x와 y의 값이 같음 === 일치 비교 x===y, x와 y의 값과 타입이 같음 != 부동등 비교 x!=y, x와 y의 값이 다름 !== 불일치 비교 x!==y, x와 y의 값과 타입이 다름
좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교
좌항과 우항의 피연산자가 타입은 다르더라도 암묵적 타입 변환 후에 같은 값일 수 있다면 true를 반환
5 == 5; //true
5 == '5'; //true
좌항과 후앙의 피연산자가 타입도 같고 값도 같은 경우에 한해 true를 반환
암묵적 타입 변환을 하지 않는다!
5 === 5; //true
5 === '5'; //false
주의! 자바스크립트에선 양의0과 음의0이 존재한다. 이들을 비교하면 true를 반환
0 == -0;//true
0 === -0;//true
주의! NaN은 자신과 일치하지 않는 유일한 값이다.
NaN === NaN; //false
만약 숫자가 NaN인지 조사하려면 isNaN을 사용해야한다.
isNaN(NaN);//true
Object.is 메서드
ES6에서 도입된 메서드로 정확한 비교 결과를 반환한다. 그 외엔 ===와 동일하게 동작
-0 === +0 //true
Object.is(-0,+0); // false
NaN === NaN; //false
Object.is(NaN,NaN); // true
부동등 비교연산자(!=)와 불일치 비교 연산자(!==)는 각각 동등 비교 연산자(==)와 일치 비교 연산자(===)의 반대 개념이다.
조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때 반환할 값
var result = score >= 60 ? 'pass' : 'fail';
typeof '' //string
typeof 1 //number
typeof NaN //number
typeof true //boolean
typeof undefined //undefined
typeof Symbol() //symbol
typeof null //object
typeof [] //object
typeof {} //object
typeof new Date() //object
typeof /test/gi //object
typeof function () {} //function
null 값은 자바스크립트 버그로 인해 null이 아닌 object를 반환한다.
따라서 null 타입을 확인할때는 typeof 연산자 말고 일치 연산자(===)를 사용하자.
var foo = null;
typeof foo == null; //false
foo === null; //true
ES7에서 도입된 지수 연산자는 ** 를 사용한다.
//ES7
2 ** 4 //16
2 ** 2 ** 2//16
(-5) ** 2 //음수는 괄호로 묶어야 한다.
//ES7 이전
Math.pow(2,4) //4
Math.pow(Math.pow(2,2),2);//16