English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

js에서 bool 값의 변환 및 "&&", "||", "!!"에 대한 자세한 설명

서론

먼저 알아야 할 것은 js에서는6false 값을 가진 것은: 0, '', null, undefined, NaN, false입니다. 다른 것(예: {}, [], Infinity)은 true입니다.

Boolean() 함수를 사용하거나 두 번의 부정 연산을 통해 객체의 부울 값을 얻을 수 있습니다. 예를 들어, Boolean(undefined)과 !!undefined도 부울 값 false를 얻을 수 있습니다.

0, '', null, undefined, NaN, {}, [], Infinity에 대해 부울 값을 구하면, 각각 false, false, false, false, false, true, true, true입니다.

따라서 우리가 알아야 할 것은: 객체의 부울 값은 true입니다. 예를 들어, 객체 {}도 true입니다.

bool 값 변환

데이터 타입 bool 값 변환
undefined undefined는 false로 변환됩니다.
Object null은 false로 변환되고, 다른 것은 true로 변환됩니다.
Boolean false는 false로 변환되고, true는 true로 변환됩니다.
Number 0, NaN은 false로 변환되고, 다른 것은 true로 변환됩니다.
String ""은 false로 변환되고, 다른 것은 true로 변환됩니다.

"&&"

javascript에서 "&&" 연산자의 계산 규칙은 다음과 같습니다:

&& 왼쪽 표현식의 값이 참이면, 오른쪽 표현식의 값을 반환합니다. 여러 && 표현식이 함께 계산될 때, 첫 번째 표현식이 false를 계산하는 값을 반환합니다. 모든 표현식의 계산 결과가 true라면, 가장 오른쪽 표현식의 값을 반환합니다.

const aa = {'name': 'xx'};
const bb = aa && aa.age; // bb 출력이 undefined로 됩니다;
let cc;
const dd = cc && cc.name ? cc.name : undefined; // dd 출력이 undefined
const dd = cc && cc.name; // dd 출력이 undefined

위两句 코드의 실행 결과는 같습니다. 코드를 작성할 때는 항상 위의 방식을 사용했지만, 일부 단위 테스트가 커버되지 않아, 단위 테스트 브랜치 커버리지가 매우 낮았습니다. 아래의 방식으로 변경하면 문제를 잘 해결할 수 있습니다. 두 가지 방식의 효과는 같습니다.

"||"

javascript에서 "||" 연산자의 연산 규칙은 다음과 같습니다:

"||" 왼쪽 표현식의 값이 참일 경우, 왼쪽 표현식의 값을 반환합니다. 여러 "||" 표현식이 함께 연산될 때, 첫 번째 표현식의 연산 결과가 true인 값이 반환되며, 모든 표현식의 연산 결과가 false인 경우에는 가장 오른쪽 표현식의 값을 반환합니다.

const aa = false || 'xx'; // aa 출력이 'xx' 

"!!"

"!!"은 표현식을 강제로布尔형 값으로 변환하는 연산자로, 연산 결과는 true 또는 false입니다.

const aa = 'xx';
const bb = !!aa; // bb 출력이 true
const cc = !!(NaN || undefined || null || 0 || '' ); // cc가 false

요약

이 문서의 모든 내용이 끝납니다. 이 문서의 내용이 여러분의 학습이나 업무에 도움이 되길 바라며, 질문이 있으면 댓글을 통해 교류해 주시기 바랍니다. 감사합니다.呐喊 교본에 대한 여러분의 지지에 감사합니다.

선언: 이 문서의 내용은 인터넷에서 수집되었으며, 저작권자는 본사이며, 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있을 경우 이메일을 notice#w로 보내 주시기 바랍니다.3codebox.com에 대한 신고를 위해 이메일을 보내시면 (#을 @으로 변경하십시오) 관련 증거를 제공하시기 바랍니다. 사실이 확인되면, 이 사이트는 즉시 의심스러운 저작권 내용을 삭제할 것입니다.

추천해드립니다