English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
서론
먼저 알아야 할 것은 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에 대한 신고를 위해 이메일을 보내시면 (#을 @으로 변경하십시오) 관련 증거를 제공하시기 바랍니다. 사실이 확인되면, 이 사이트는 즉시 의심스러운 저작권 내용을 삭제할 것입니다.