JavaScript에는 두 값이 동일한지 여부를 결정하는 두 가지 방법이 있습니다.
동일한 기호
평등 기호는 두 가지 동일한 징후로 구성됩니다. ==
JavaScript는 약한 언어입니다. 이것은 동일한 부호가 두 값을 비교하기 위해 유형을 시전 함을 의미합니다.
코드 사본은 다음과 같습니다.
""== "0"// false
0 == ""// true
0 == "0"// true
false == "false"// false
false == "0"// true
false == 정의되지 않은 // false
false == null // false
null == 정의되지 않은 // true
"/t/r/n"== 0 // true
위의 코드는 유형 변환 결과를 보여 주므로 동일한 부호 ==를 사용하는 것이 나쁜 프로그래밍 습관이라는 것을 알고 있습니다. JavaScript의 복잡한 유형 변환 메커니즘으로 인해 결과 오류는 추적하기가 어려워집니다.
또한, 유형의 주조는 또한 문자열을 숫자와 비교할 때 숫자로 캐스팅됩니다.
엄격한 평등 기호
엄격한 평등 기호는 세 가지 동일한 징후로 구성됩니다. ===
동일한 기호의 작동과 유사하지만 엄격하게 동일한 기호는 캐스트 작업을 수행하지 않습니다.
코드 사본은 다음과 같습니다.
""=== "0"// false
0 === ""// 거짓
0 === "0"// false
false === "false"// false
false === "0"// false
false === 정의되지 않은 // 거짓
false === null // false
null === 정의되지 않은 // 거짓
"/t/r/n"=== 0 // false
위의 코드는 코드를 더 명확하게 만듭니다. 두 값의 유형이 다른 경우, False를 직접 반환하여 성능을 향상시킵니다.
비교 대상
== 및 ===는 동일 부호라고하지만 비교 된 두 값 중 하나가 객체 일 때 성능이 매우 다릅니다.
코드 사본은 다음과 같습니다.
{} === {}; // 거짓
새 문자열 ( 'foo') === 'foo'; // 거짓
새 번호 (10) === 10; // 거짓
var foo = {};
foo === foo; // 진실
여기서는 두 값이 동일한지 여부를 더 이상 비교하는 것이 아니라 두 값이 동일한 객체 인스턴스를 참조하는지 여부를 결정합니다.
요약
엄격한 평등 기호 === 만 사용하는 것이 좋습니다. 유형 변환을 수행 해야하는 경우 JavaScript 자체의 복잡한 캐스팅 방법에 의존하는 대신 비교 전에 명시적인 유형 변환을 수행 할 수 있습니다.