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

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

sitelink1 http://youall-textcube.blogspot.com/2010/04/javascript.html 
sitelink4 http://1 
extra_vars4 ko 
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를 반환한다.

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
246 [Gemini] ajax 와 fetch 의 차이 황제낙엽 2025.01.04 3419
245 [검토 완료] 디바이스 카메라로 촬영한 사진을 서버에 업로드하기 샘플 황제낙엽 2024.11.21 3988
244 브라우저에서 이미지를 편집(crop 등) 할 수 있는 오픈소스 Cropper.js 황제낙엽 2024.11.16 3842
243 [ChatGPT] json data 의 정렬 [1] 황제낙엽 2024.07.23 3356
242 DOMContentLoaded 이벤트와 window.onload 이벤트 황제낙엽 2024.07.15 3672
241 fetch() 사용 예제들 황제낙엽 2024.07.09 3382
240 [Copilot] Vanilla JavaScript에서 외부 스크립트 파일에 정의된 함수들을 로드 황제낙엽 2024.06.21 3759
239 [Copilot] ES6 모듈(module) 문법 황제낙엽 2024.06.21 3811
238 [Copilot] JSON 객체 내부 데이터를 순회하면서 조회하는 코드 황제낙엽 2024.06.02 3272
237 [Copilot] JavaScript로 서버에 특정 값을 POST 방식으로 전달하고 응답을 기다리지 않고 바로 종료 황제낙엽 2024.05.31 3616
236 json 데이터 내의 변수명에 prefix 로 type 표현하기 황제낙엽 2024.04.15 3363
235 fetch() 함수 사용 예제 file 황제낙엽 2023.11.23 3607
234 현재 document 의 host 와 port 를 얻는 방법 황제낙엽 2023.10.03 4209
233 (Bard) FileReader 로 여러개의 파일을 read 하는 법 file 황제낙엽 2023.08.23 3664
232 How to build a file upload service with vanilla JavaScript file 황제낙엽 2023.08.22 3715
231 (Bard) JavaScript로 JSON 배열을 작성하는 방법 황제낙엽 2023.08.21 3673
230 모바일 브라우저에서 file input element 를 이용하여 여러장의 이미지를 서버에 전송하려 할때 [1] 황제낙엽 2023.08.21 3703
229 navigator.mediaDevices 황제낙엽 2023.08.21 3798
228 Barcode Detection API 황제낙엽 2023.08.06 3858
227 정규식을 이용한 이메일 검증 스크립트 file 황제낙엽 2023.06.25 2894