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

JavaScript:등호 연산자

JavaScript에서 동등성을 비교하는 네 가지 방법이 있습니다. 이 문서에서는 동등성을 결정하는 데 사용되는 고유 연산자, 강제 변환 유형, JavaScript 언어에서 참 또는 거짓 값을 평가할 때 발생하는 몇 가지 특이 사항에 대해 설명합니다.

엄격한 평등 비교

완전 항등 연산자는 삼중 등호(===)로 표시됩니다. 이 연산자의 목적은 값뿐만 아니라 유형도 비교하는 것입니다.

const strictComparison = (a, b) => {
 console.log(typeof a);
 console.log(typeof b);
 return a === b;
}
 
strictComparison(8, '8'); //false

strictComparison 위의 예에서 함수는 두 개의 값을 가져와서 두 값이 서로 완전히 같은지 여부를 반환합니다.

언뜻보기에 값은 모두 8 값이기 때문에 동일하게 보입니다. . 그러나 완전 항등 연산자는 유형도 확인합니다. a를 살펴보자면 이 경우 를 살펴보십시오. typeof a , ‘number’를 반환합니다. . b에도 동일한 작업을 수행하면 , typeof b 포함 , ‘string’을 반환합니다. .

유형이 동일하지 않기 때문에 false를 반환합니다. .

===와의 비정상적인 비교

JavaScript에서 엄격한 등호 연산자로 만들 수 있는 몇 가지 특이한 비교가 있습니다. 다음은 인터뷰 상황에서 흔히 묻는 질문입니다.

피연산자1 유형 피연산자 1 피연산자 2 유형 피연산자2 반환 값
객체 객체 사실
정의되지 않음 정의되지 않음 정의되지 않음 정의되지 않음 사실
객체 정의되지 않음 정의되지 않음 거짓
NaN 숫자 NaN 숫자 거짓
거짓 부울 "거짓" 문자열 거짓
거짓 부울 거짓 부울 사실
“” 문자열 "" 문자열 사실
“” 문자열 정의되지 않음 정의되지 않음 거짓

주목해야 할 또 다른 사항은 데이터 구조와 비교하지 않는다는 것입니다. 배열이나 개체를 비교하려면 보다 정교한 문을 사용해야 합니다.

여기에 있는 대부분의 항목은 유형이 일치하거나 일치하지 않기 때문에 수행 방식을 평가합니다. 한 가지 예외는 NaN입니다. – 이것은 false로 평가됩니다. NaN 이론적으로 무엇이든 될 수 있으므로 동일할 수 있는지 여부에 대한 표시가 없으므로 거짓으로 평가됩니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

엄격한 불평등 비교

완전 부등식 연산자는 느낌표와 두 개의 등호(!==)로 표시됩니다. 두 값이 값과 유형이 같지 않은지 여부를 평가합니다.

const strictInequalityComparison = (a, b) => {
 console.log(typeof a);
 console.log(typeof b);
 return a !== b;
}
 
strictInequalityComparison("8", 8); //true

strictInequalityComparison 위의 예에서 함수는 두 개의 값을 가져와서 두 값이 서로 완전히 같지 않은지 여부를 반환합니다.

두 값이 모두 동일한 값을 갖기 때문에 언뜻 보기에는 값이 같아 보입니다(같지 않은 것은 아님). 그러나 완전 항등 연산자와 마찬가지로 완전 항등 연산자도 유형을 확인합니다.

a를 살펴보자면 이 경우 typeof a를 살펴보세요. , ‘string’을 반환합니다. . b에도 동일한 작업을 수행하면 , typeof b 포함 , ‘number’를 반환합니다. . 유형이 동일하지 않기 때문에 를 반환합니다. true .

!==와의 비정상적인 비교

JavaScript에서 완전 비균등 연산자로 만들 수 있는 몇 가지 특이한 비교가 있습니다. 다음은 인터뷰 상황에서 자주 묻는 질문입니다.

피연산자1 유형 피연산자 1 피연산자 2 유형 피연산자2 반환 값
객체 객체 거짓
정의되지 않음 정의되지 않음 정의되지 않음 정의되지 않음 거짓
객체 정의되지 않음 정의되지 않음 사실
NaN 숫자 NaN 숫자 사실
거짓 부울 "거짓" 문자열 사실
거짓 부울 거짓 부울 거짓
“” 문자열 "" 문자열 거짓
“” 문자열 정의되지 않음 정의되지 않음 사실

완전 항등 연산자와 마찬가지로 개체나 배열 간에는 비교할 수 없습니다.

한 가지 더...

JavaScript 개발 경력의 대부분의 상황에서 이 두 연산자, ===및 !==는 조건부 논리를 작성하는 데 사용되는 연산자입니다.

느슨한 평등 비교

느슨한 등호 연산자는 이중 등호(==)로 표시됩니다. 이 연산자의 목적은 동일한지 여부를 평가하기 전에 두 값을 공통 유형으로 강제 변환하는 것입니다. 이것을 유형 강제 라고 합니다. 또는 유형 변환 .

const looseComparison = (a, b) => {
 console.log(typeof a);
 console.log(typeof b);
 return a == b;
}
 
strictComparison(8, '8'); //true

looseComparison 위의 예에서 함수는 두 개의 값을 가져와서 두 값이 서로 느슨하게 같은지 여부를 반환합니다.

언뜻 보기에는 값이 같아 보이지 않습니다. 하나는 숫자이고 하나는 문자열이기 때문입니다. 그러나 느슨한 동등 연산자는 유형을 확인하지 않습니다. 명령문은 값을 비교하기 전에 유형을 동일하게 강제하려고 시도합니다. 따라서 두 번째 피연산자가 숫자로 변환된 다음 비교되기 때문에 예제는 true를 반환합니다.

==와의 비정상적인 비교

JavaScript에서 엄격한 등호 연산자로 만들 수 있는 몇 가지 특이한 비교가 있습니다. 다음은 인터뷰 상황에서 자주 묻는 질문입니다.

피연산자1 유형 피연산자 1 피연산자 2 유형 피연산자2 반환 값
객체 객체 사실
정의되지 않음 정의되지 않음 정의되지 않음 정의되지 않음 사실
객체 정의되지 않음 정의되지 않음 사실
NaN 숫자 NaN 숫자 거짓
거짓 부울 "거짓" 문자열 거짓
거짓 부울 거짓 부울 사실
“” 문자열 "" 문자열 사실
“” 문자열 정의되지 않음 정의되지 않음 거짓

여기에 있는 대부분의 항목은 엄격한 평등에 대한 첫 번째 섹션에서와 동일하게 평가됩니다. 주목할만한 예외는 null정의되지 않음 느슨하게 비교하면 참으로 평가됩니다.

느슨한 불평등 비교

느슨한 부등호 연산자는 느낌표와 하나의 등호(!=)로 표시됩니다. 두 값이 값에서만 같지 않은지 여부를 평가합니다. 두 인수를 동일한 유형으로 변환하려고 시도하여 이를 수행합니다.

 const looseInequalityComparison = (a, b) => {
 console.log(typeof a);
 console.log(typeof b);
 return a != b;
}
 
looseInequalityComparison("8", 8); //false

looseInequalityComparison 위의 예에서 함수는 두 개의 값을 가져와서 두 값이 서로 느슨하게 같지 않은지 여부를 반환합니다.

언뜻 보기에는 값이 모두 같기 때문에 값이 같아 보입니다. 그러나 느슨한 항등 연산자와 마찬가지로 느슨한 부등식 연산자는 비교 전에 두 피연산자에서 유형이 동일하도록 강제합니다. 값은 강제 변환 후에도 동일하므로 false를 반환합니다. .

!=와의 비정상적인 비교

JavaScript에서 느슨한 비균등 연산자로 만들 수 있는 몇 가지 특이한 비교가 있습니다. 다음은 인터뷰 상황에서 자주 묻는 질문입니다.

피연산자1 유형 피연산자 1 피연산자 2 유형 피연산자2 반환 값
객체 객체 거짓
정의되지 않음 정의되지 않음 정의되지 않음 정의되지 않음 거짓
객체 정의되지 않음 정의되지 않음 거짓
NaN 숫자 NaN 숫자 사실
거짓 부울 "거짓" 문자열 사실
거짓 부울 거짓 부울 거짓
“” 문자열 "" 문자열 거짓
“” 문자열 정의되지 않음 정의되지 않음 사실

완전 항등 연산자와 마찬가지로 객체나 배열 간에는 비교할 수 없습니다.

여기에 있는 대부분의 항목은 엄격한 불평등에 대한 두 번째 섹션에서와 동일하게 평가됩니다. 주목할만한 예외는 null정의되지 않음 느슨하게 비교하면 거짓으로 평가됩니다.

결론

이 기사에서는 JavaScript에서 동등성을 비교하는 네 가지 방법을 살펴보았습니다. 기억해야 할 주요 사항은 삼중 등호(===)와 이중 등호(==)가 같은 연산자가 아니라는 것입니다. 하나는 유형과 값에 대해 엄격하게 평가하고 다른 하나는 둘 다 같은 유형이 되도록 강제하려고 시도한 후에만 값을 평가합니다.