관계 연산자(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 연산자는 왼쪽 값이 오른쪽 객체의 프로퍼티 이름일 경우 참으로 평가된다. 다음 예제를 보자.
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 연산자는 왼쪽 객체가 오른쪽 클래스의 인스턴스일 경우 참으로 평가되고, 그 밖의 경우에는 거짓으로 평가된다.
자바스크립트에서 객체의 클래스는 그것을 초기화하는 생성자 함수로 정의된다.
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
← 이전 | 홈 | 다음 → |