연산자 (느슨한 동일 컴퓨팅)의 동작은 종종 혼란 스럽습니다. 그것의 비밀은 수치 비교를 선호한다는 것입니다. 언뜻보기에 이것은 이상하게 보이지만 일단 작업 원칙을 이해하면이 행동의 이유와 효과적으로 사용하는 방법을 이해할 수 있습니다.
수많은 우선 순위
ecmascript 사양에 따르면, 는 작동 기호가 ==
추상 비교 알고리즘을 따릅니다. 이 알고리즘에는 명백한 편견이 있습니다. 비교 전에 값을 숫자로 변환하는 것을 선호합니다. 작업 원칙은 다음과 같습니다.
하나의 값이 이고 다른 값이 문자열 인 경우, 문자열은 숫자로 변환됩니다.
값이 ==
부울 값 인 경우 숫자로 변환합니다 (true 1, false 변환 0으로 변환).
값이 객체 (예 : 배열) 인 경우 Toprimitive 조작을 사용하여 원래 값으로 변환 한 다음이 프로세스를 반복하십시오.
-
이것은 를 사용할 때 JavaScript가 일반적으로 무대 뒤에서 알리는 것보다 더 많은 작업을 수행한다는 것을 의미합니다. 그것은 단순한 비교 가치가 아니라 숫자로 변환하려는 첫 번째 시도입니다.
중요
이 수치 우선 순위를 이해하면 다른 시나리오에서 동작을 예측하는 데 도움이 될 수 있습니다. 예를 들면 :
여기서, 문자열 "5"는 숫자 5로 변환되며, 이는 상대적으로 성공합니다. 그러나 를 사용하면 유형이 일치해야하므로 False를 반환해야합니다.
이 동작은 무작위가 아니며, 좀 더 쉽게 만드는 것입니다. 예를 들어, 숫자의 문자열 표현을 나타내는 숫자를 비교하는 경우 - 는 명시 적 유형 변환 없이도 처리 할 수 있습니다.
는 일반적으로 더 안전하지만 경우에 따라
도 유용합니다. 예를 들어, 문자열 또는 디지털 양식 (예 : 양식의 사용자 입력) 형식으로 표시 될 수있는 데이터를 처리하는 경우 코드를 단순화 할 수 있습니다.
-
> 는 추가 유형 확인 로직없이 함수가 문자열 및 디지털 입력을 처리 할 수 있도록합니다.
더 넓은 관점
핵심 사항은
자체가 나쁘지 않다는 것입니다. 단지 도구 일뿐입니다. 예를 들어, 숫자를 배열과 비교하는 것과 같이 불합리한 방식으로 사용하면 실제 문제가 나타납니다.
이것은 배열이 문자열 ( "42")으로 변환 된 다음 숫자 (42)로 변환되기 때문입니다. 그러나 그것이 효과적이라고해서 좋은 생각을 의미하지는 않습니다. 여기서 문제는 가 아니라 의미없는 비교입니다.
JavaScript의 작동 기호는 수치 적으로 우선 순위가 있습니다. 는 일반적으로 더 안전한 선택이지만, 특정 시나리오에서는 강제 변환 유형이 의도적이고 이해하기 쉬운 경우 ==
는 언어의 일부이기 때문에 사용을 고려해야합니다. ===
위 내용은 우리는 전혀 사용하지 않는 것보다`==`more를 이해해야합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!