NOT NOT, 예상대로 작동하지 않음
단일
!
은 값을 기술적으로 부울인 참 또는 거짓 값으로 변환합니다. 그러나 표현식에 대한 값의 실제 부울 표현이 필요한 경우 이중 not !!
을 사용하여 실제 부울 값으로 변환해야 합니다.내 머리 속에서 나는 전환을 볼 수 있었다. 나는 그것을 "이 물건이 존재하는가?"라고 평가하는 것을 듣습니다. 그것이 틀렸다는 것을 알면서도 나는 여전히 다른 영역에서 문제가 발생하는 이유를 찾기 위해 코드를 파헤쳤습니다.
다음은 잘못된 (논리) 코드의 간단한 예입니다.
const data = { params: { type: '' } };
if (!!data.params && !!data.params.type) {
// do something here
}
이 코드는 IF-BLOCK 내부로 들어가는 것을 거부했습니다.
콘솔을 파고 나서 깨달았습니다 ...
!!data.params
// true
!!data.params.type
// false
내가 빨리 깨달은 것은 내가 간단한 논리 문제에 걸렸다는 것입니다. 빈 문자열은
false
와 같고, 그 안에 무언가가 있는 문자열은 true
와 같습니다.더 나은 논리 집합은
IN
연산자를 사용하는 것입니다.const data = { params: { type: '' } };
if (('params' in data) && ('type' in data.params)) {
// do something here
}
그러면 IF-BLOCK의 내부 코드가 제대로 작동했을 것입니다.
사용할 수있는 또 다른 방법은
hasOwnProperty
방법입니다 ...const data = { params: { type: '' } };
if (data.hasOwnProperty('params') && data.params.hasOwnProperty('type')) {
// do something here
}
일반적으로 두 가지 솔루션 중 첫 번째 솔루션을 선호합니다. 나에게는 이것이 더 읽기 쉬운 것처럼 보이지만 그것이 내 취향입니다.
Reference
이 문제에 관하여(NOT NOT, 예상대로 작동하지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rfornal/not-not-not-working-as-expected-2big텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)