Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 Strict Equality와 Loose Equality 연산자의 차이점은 무엇입니까?

JavaScript에서 엄격한 항등 연산자와 느슨한 항등 연산자의 차이점과 중요한 이유에 대해 알아보세요.

JavaScript에서는 두 개의 같음 연산자를 사용하여 값을 비교할 수 있습니다. 느슨한 같음 연산자 == (이중 등호) 및 완전 항등 연산자 === (삼중 같음). 표면적으로는 동일하게 보이지만 그렇지 않습니다. 그렇지 않으면 버그가 발생할 수 있으므로 차이점을 이해하는 것이 중요합니다.

콘솔에서 다음 코드를 실행해 보십시오.

let a = 4 // number
let b = "4" // string

console.log(a == b) // output: true

JavaScript에서 위 내용이 사실이라고 말하는 이유 아닐 때? 숫자 유형의 값이 있습니다. 문자열 유형의 값과 비교됨 — 그렇다면 어떻게 동일한 값을 가질 수 있습니까?

느슨한 등호 연산자 ==를 사용할 때 피연산자를 동일한으로 변환합니다. 유형(아직 없는 경우)을 입력한 다음 해당 값을 비교합니다.

이 프로세스를 유형 강제 변환이라고 합니다. (두 값을 이후 비교할 때 공통 유형으로 변환하려고 시도).

따라서 위의 예에서 true의 출력은 값이 비교되기 전에 값 유형이 동일하게 변환되기 때문에 정확합니다.

와, 바보 같군요!

동의하지만 그렇군요. 중요한 것은 JavaScript의 이 불편한 "특이점"을 알고 있다는 것입니다.

여기에서 엄격한 항등 연산자 === 값 유형을 변환하지 않기 때문에 엄격히 값 유형을 비교한 다음 동일한지 확인:

let a = 4
let b = "4"

console.log(a === b)
// output: false

이제 false를 얻습니다. , 두 변수(a &b) 모두 값 "4"를 포함하지만 피연산자는 다른 값 유형(a는 숫자 값, b는 문자열 값)이기 때문입니다.

엄격하지 않은 ==와 달리 연산자, 엄격한 === 연산자는 예측 가능한 출력을 제공하므로 대부분의 개발자는 == 사용을 권장하지 않습니다. .

합당한 이유가 있습니까? JavaScript에서 엄격하지 않은 비교 연산자를 사용하려면?

드물지만 몇 가지 예를 찾을 수 있습니다. 일반적으로 엄격한 ===를 사용하는 것이 기본입니다. 명백한이 없는 한 등호 연산자 엄격하지 않은 ==를 사용하는 이유 평등 연산자. 이렇게 하면 잘못된 등호 연산자를 사용하여 발생하는 코드의 버그를 배제할 수 있으며 이는 항상 보너스입니다.