PHP에서 이중 같음 (==) 대신 삼중 같음 비교 연산자 (===)를 사용해야합니까? 후자를 사용해야하는 특별한 이유가없는 한?


최상의 답변

물론입니다!

PHP, Javascript 또는 느슨하고 엄격한 동등성 검사를 모두 제공하는 기타 언어에서는 달리 수행 할 설득력있는 이유가없는 한 엄격한 버전을 사용하는 것이 가장 좋습니다. . (사실, 일부 소프트웨어 개발자는 느슨한 동등성 검사를 전혀 사용하지 않는다고 주장합니다!) 여기에는 여러 가지 이유가 있습니다.

우선 느슨한 동등성을 사용하면 전체 등급의 결함이 발생할 수 있습니다. 엄격한 동등성으로 피할 수 있습니다. PHP는 특히 “도움이되는”것으로 악명이 높지만 동적 타이핑을 사용하는 대부분의 언어는 유형 간 변환에 관대합니다. 느슨한 동등성을 전달하는 데이터는 대부분의 경우 잘 작동하고 오류를 트리거하거나 예기치 않은 부작용을 일으키기 전에 코드에 훨씬 더 깊이 들어갈 수 있습니다. 한편, 엄격한 동등성 검사는 정적으로 형식화 된 언어에서 발생하는 검사 유형과 더 유사합니다. 잘못된 형식의 데이터가 잘못 실행될 가능성이 훨씬 적습니다.

관련 문제는 느슨한 동등성이 코드 추론을 더 어렵게 만드는 방법입니다. 엄격한 동등성을 사용하면 검사를 통과 한 데이터에 대해 많은 가정을 할 수 있습니다. 느슨한 동등성을 사용하는 경우에도 마찬가지입니다. 다음 두 가지 예를 살펴보세요.

// Example #1: strict

if ( $i === 1 ) {

doThing( $i );

}

// Example #2: loose

if ( $i == 1 ) {

doThing( $i );

}

첫 번째 예에서 “doThing”함수가 숫자 값으로 호출되고 해당 함수가 숫자를 처리하는 방법 만 고려하면된다고 가정 할 수 있습니다.

두 번째 예에서는 문자열 또는 부울 값을 비롯한 다양한 유형으로 “doThing”을 호출 할 수 있습니다. doThing함수를 읽는 동안 암시 적 유형 변환과 관련된 모든 다양한 (때로는 무의미한) 규칙을 포함하여 각 유형을 처리하는 방법을 고려해야합니다. 머릿속에서 추적해야 할 내용이 많습니다.

또한 느슨한 동등성을 사용하면 명시 적이 지 않습니다. 이것은 논리를 통한 추론의 어려움에 기여할뿐만 아니라 논리가 표현해야하는 실제 요구 사항을 포착하지 못합니다. 위의 예제 # 2에서는 원래 프로그래머가 숫자 값, 문자열 값, 부울 값 또는 이들의 일부 조합을 예상했는지 알 수있는 방법이 없습니다. 코드를 유지 관리하는 것이 골칫거리입니다.

마지막으로 암시 적 유형 캐스팅이 편리 할 수 ​​있지만 전문적인 환경에서는 거의 필요하지 않습니다. 항상 합리적인 기본값을 설정하거나 데이터를 적절한 유형으로 수동으로 강제 할 수 있습니다. 이렇게하려면 더 많은 코드와 노력이 필요할 수 있지만 코드의 안정성도 크게 향상됩니다.

Answer

두 값이 동일한 유형을 가져야한다는 것을 알고 있다면 yes를 사용하십시오. ===) over loose (==). Strict는 “loose처럼 유형 변환을 수행 할 필요가 없기 때문에 성능이 더 좋습니다.

예를 들어 1 ==”1 “은 해당 문자열이 같음을 확인하기 위해 숫자로 변환되기 때문에 true를 반환합니다.

1 === “1”은 false를 반환하지만

엄격한 동등성은 “동일한 유형이 아님? FALSE “

도움이되기를 바랍니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다