관계 연산자

관계 연산자(relational operator)는 두 값 간의 관계를 검사해서 해당 관계가 존재하는지 여부에 따라 참이나 거짓을 반환한다.

비교 연산자

비교 연산자는 두 값의 상대적인 순서를 판단한다.

비교 연산자의 예는 다음과 같다.

console.log(10 > 5);         // true
console.log(10 >= 5);        // true
console.log(10 <= 5);        // false
console.log(10 < 5);         // false
console.log('a' < 'b');      // true

이러한 비교 연산자의 피연산자로는 어떤 타입이든 올 수 있다. 그렇지만 비교는 숫자와 문자열에 대해서만 수행될 수 있어서 숫자나 문자열이 아닌 피연산자는 변환된다.

두 피연산자가 모두 숫자이거나 숫자로 변환되면 두 피연산자는 숫자상으로 비교된다.

console.log('6' > 5);            // true

피연산자가 모두 문자열이거나 문자열로 변환되면 두 피연산자는 문자열로 비교된다.

console.log('5' > '25');     // true

한 피연산자가 숫자이고 다른 피연산자가 숫자로 변환될 수 없으면 해당 피연산자는 NaN으로 변환되고 비교는 항상 거짓을 반환한다.

console.log('a' > 5);            // false
console.log(5 > NaN);            // false

피연산자가 가운데 하나가 숫자나 문자열로 변환될 수 없으면 비교는 항상 거짓을 반환한다.

console.log({x:1} > 5);          // false
console.log(5 > {x:1});          // false

in 연산자

in 연산자는 왼쪽 값이 오른쪽 객체의 프로퍼티 이름일 경우 참으로 평가된다. 다음 예제를 보자.

var point = {x:5, y:5}
console.log('x' in point);          // true
console.log('a' in point);          // false
console.log('toString' in point);   // true, 프로퍼티에서 상속됨

instanceof 연산자

instanceof 연산자는 왼쪽 객체가 오른쪽 클래스의 인스턴스일 경우 참으로 평가되고, 그 밖의 경우에는 거짓으로 평가된다.

자바스크립트에서 객체의 클래스는 그것을 초기화하는 생성자 함수로 정의된다.

var d = new Date();
console.log(d instanceof Date);     // true
var d = [1,2,3,4,5];
console.log(d instanceof Array);    // true

모든 객체는 Object의 인스턴스다. 다음 예제를 보자.

var d = new Date();
console.log(d instanceof Object);   // true
var d = [1,2,3,4,5];
console.log(d instanceof Object);   // true
console.log({} instanceof Object);  // true

instanceof의 왼쪽 피연산자가 객체가 아니면 거짓이 반환된다.

console.log(5 instanceof Object);   // false

instanceof의 오른쪽 피연산자가 객체가 아니면 런타임 오류가 발생한다.

console.log(5 instanceof 5);    // TypeError: invalid 'instanceof' operand 5

관련 수업

← 이전다음 →