일반 연산자 (===, ==, >=, <=)

황제낙엽 2012.05.30 14:06 조회 수 : 47

sitelink1 http://youall-textcube.blogspot.com/2010/04/javascript.html 
sitelink2  
sitelink3  
sitelink4 http://1 
extra_vars4 ko 
extra_vars5  
extra_vars6 sitelink1 

1. ===

 

  • 두 값의 타입이 다르다면 두 값은 일치하지 않는다.
  • 두 값이 모두 숫자이고 값이 같다면 두 값은 일치한다. 단, 적어도 하나의 값이 NaN일 경우 두 값은 일치하지 않는다. NaN값은 어느 값과도 일치하지 않는다. 어떤값이 NaN인지 확인하려면 전역 함수인 isNaN()을 사용하라.
  • 두 값이 모두 문자열이고 같은 위치에 정확히 같은 문자들을 갖고 있다면 두 값이 일치한다. 만일 문자열의 길이나 내용이 다른 경우 두 값은 일치하지 않는다. 몇몇 경우 Unicode 표준에서 한 문자열을 인코딩 하는 방법이 두 가지 이상일 수 있음을 유의하라. 하지만 자바스크립트에서 효율성을 위해 엄격히 문자 대 문자 비교의 원칙으로 문자열을 비교하며, 모든 문자열은 비교되기 이전에 '정규 형식'으로 변환되어 있다고 가정한다.
  • 두 값이 모두 불리언 값 true인 경우, 또는 두 값이 모두 불리언 값 false인 경우, 두 값은 일치한다.
  • 두 값이 같은 객체, 배열 또는 함수를 참조할 경우 두 값이 일치한다. 만일 두 값이 서로 별개의 객체를 참조할 경우 두 값은 일치하지 않는다. 설사 두 객체의 프로퍼티가 일치하거나 두 배열의 원소가 일치한다고 하더라고 마찬가지다.
  • 두 값이 모두 null일 경우, 또는 두 값이 모두 undefined일 경우, 두 값은 일치한다.

 

 

 

2. ==

 

  • 두 값의 타입이 같은 경우 두 값이 일치하는지 테스트 한다. 두 값이 일치할 경우 그 둘은 동등하다. 두 값이 일치하지 않는 경우 동등하지 않다.
  • 두 값의 타입이 다른 경우라 할지라도 동등할 여지가 있다. 동등함을 확인하는 과정에는 다음 규칙과 타입 변환이 사용된다.
    • 두 값 중에 하나가 null이고 다른 하나가 undefined라면 두 값은 동등하다.
    • 한 값이 숫자이고 다른 하나는문자열이면, 문자열을 숫자로 변환한 후에 이 를 사용해 다시 비교한다.
    • 두 값 중 하나가 true이면, 이를 1로 변환한 후 다시 비교한다. 두 값 중 하나가 false이면, 이를 0으로 변환한 후 다시 비교한다.
    • 한 값이 객체이고 다른 하나는 숫자 또는 문자열이면, 객체를 기본 타입의 값으로 변환한 후 다시 비교한다. 객체를 기본값으로 변환하는 데에는 해당 객체의 toString()메서드나 valueOf()메서드가 사용된다. 코어 자바스크립트 내장 클래스에서 toString() 변환을 적용하기 전에 valueof()변환을 시도한다. 단, Date클래스는 예외적으로 toString() 변환을 바로 수행한다. 코어 자바스크립트에 속하지 않는 객체에서는 각 구현에서 정의한 방식으로 기본값 변환을 수행한다.
  • 위에 열거하지 않은 기타 값들의 조합은 동등하지 않다.

 

 

3. >=, <=

 

  • 두 피연산자가 모두 숫자이거나 또는 둘 다 숫자로 변환할 수 있으면 이 둘은 숫자로 비교된다.
  • 두 피연산자가 모두 문자열이거나 또는 둘 다 문자열로 변환할 수 있으면 이 둘은 문자열로 비교된다.
  • 한 피연산자는 문자열이고 다른 하나는 숫자라면, 비교 연산자는 먼저 문자열을 숫자로 변환하여 이들을 숫자로서 비교하려 시도할 것이다. 만일 여기서 문자열이 나타내는 것이 숫자가 아니라면, 이 문자열은 NaN으로 변환된 후 비교 결과는 false다.
  • 어떤 객체를 숫자나 문자열로 변환할 수 있으면 자바스크립트는 숫자 변환을 수행한다. 이 말은 예를 들면 Date 객체는 숫자로서 비교된다는 것을 뜻한다. 두 날짜 중 어느 것이 더 앞서는지 확인할 경우가 있을 테니 Data를 수사로서 비교하는 것이 말이 된다.
  • 비교 연산자의 피연산자가 숫자나 문자열로 변환되지 못할 경우엔 언제나 false를 반환한다.
  • 둘 중 하나의 피연산자가 NaN이거나 NaN으로 변환된다면 비교 연산자는 언제나 false를 반환한다.

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
157 자바스크립트의 쉬프트 연산자 (Shift Operator) 와 음수 (Negative) 이야기 황제낙엽 2012.05.31 726
» 연산자 (===, ==, >=, <=) 황제낙엽 2012.05.30 47
155 XMLHttpRequest 의 이벤트 onreadystatechange 황제낙엽 2012.05.30 412
154 JavaScript 재입문 황제낙엽 2012.05.29 50
153 진행 상황 추적하기(XMLHttpRequest.readyState) file 황제낙엽 2012.05.23 324
152 JavaScript Touch and Gesture Events iPhone and Android 황제낙엽 2012.04.12 337
151 Javascript ArrayBuffer ? Binary handling in javascript 황제낙엽 2012.03.19 218
150 오류:호출자(서버 응용 프로그램이 아닌 서버)가 사용될 수 없어서 사라졌습니다. file 황제낙엽 2012.03.14 1950
149 Alert 에서의 개행처리 황제낙엽 2012.03.09 80
148 env.js 사용시 부족한 부분 file 황제낙엽 2012.02.15 33
147 Rhino 와 env.js 를 사용해서 자바 서버에서 javascript 를 구동해보자 file 황제낙엽 2012.02.15 116
146 외부 라이브러리 (.js) 의 바람직하지 않은 동적 로딩 (eval함수 이용) 황제낙엽 2012.01.18 1851
145 IFrames and cross-domain security file 황제낙엽 2012.01.13 246
144 자바스크립트 숫자형 체크 함수 (isFinite() 함수 와 isNaN() 함수) 황제낙엽 2011.12.13 67
143 char to hex string 황제낙엽 2011.11.29 206
142 Understanding delete 황제낙엽 2011.11.28 61
141 JScript Memory Leaks 황제낙엽 2011.11.28 69
140 JavaScript Reserved Words 황제낙엽 2011.11.28 94
139 Reference Count (순환참조) 황제낙엽 2011.11.24 191
138 IE and Memory accumulation in Javascript (document.createElement()) file 황제낙엽 2011.11.24 30