[JavaScript] 2-4. JavaScript String Type
JavaScript Boolean Type
부울 자료형 (Boolean Type)
boolean
타입에 해당하는 값은 true
, false
두 가지가 있습니다.
이 값들은 불 자료형 혹은 진리값이라고 불립니다.
프로그래밍에서 진리값은 어떤 조건이 참인지 거짓인지 데이터의 값이 있는지 없는지 확인을 하기 위해 사용됩니다.
1 < 2; // true
1 > 2; // false
3 === 3; // true
3 !== 3; // false
Number.isFinite(3); // true
Number.isFinite(Infinity); // false
Number.isNaN(NaN); // true
"hello".includes("o"); // true
//값이 일치할 때(참)는 true를 결과 값이 불일치할 때(거짓)는 false를 반환합니다.
논리 연산자
// 논리 부정(logical Not)
!true; // false
!false; // true
// 논리합 (logical OR) - 둘 중 하나가 참이면 결과 값은 참이 됩니다. 둘 다 거짓일 경우만 거짓!
true || true; // true
true || false; // true
false || true; // true
false || false; // false
// ### 단, 논리합에 있어서 false || undefined와 같은 변환이 안되는 경우의 논리 합에 있어서는 두번째 대상자를 리턴합니다. undefined
// 논리곱 (logical AND) - 둘다 참이여야 결과 값은 참이 됩니다. 하나라도 거짓이라면 거짓!
true && true; // true
true && false; // false
false && true; // false
false && false; // false
// 삼항 연산자 (ternary operator) - 식 ? 참일 때 실행할 식 또는 값 : 거짓일 때 실행할 식 또는 값;
true ? 1 : 2; // 1
false ? 1 : 2; // 2
연산자 우선순위
숫자의 연산처리에서도 우선순위가 있듯이 부울 자료형에서도 연산자의 우선순위가 있습니다.
true || true && false; // true - ||은 더하기, &&은 곱하기입니다. 연산자의 우선순위는 곱하기가 우선이기에 true가 반환됩니다.
(true || true) && false; // false - 더하기인 ||에 괄호가 쳐져서 먼저 계산을 하게 됩니다. 그렇기에 결국 true && false의 결과인 false가 반환됩니다.
true || false && false); // true - false && false는 true 이기에 결국 true || true의 결과로 true가 반환됩니다.
(true || false) && false; // false - true || false는 true 이기에 결국 true && false의 결과로 false가 반환됩니다.
논리 연산의 여러가지 법칙
// a,b,c가 모두 boolean 타입이라고 할 때, 다음 식의 결과 값은 a, b, c의 값과 관계 없이 모두 true입니다.
// 헷갈릴 경우 a,b,c에 임의의 boolean값을 부여해서 이해하면 빠릅니다.
// 이중 부정
!!a === a;
// 교환 법칙
a || b == b || a;
a && b == b && a;
// 결합 법칙
(a || b) || c === a || (b || c);
(a && b) && c === a && (b && c);
// 분배 법칙
a || (b && c) === (a || b) && (a || c);
a && (b || c) === (a && b) || (a && c);
// 흡수 법칙
a && (a || b) === a;
a || (a && b) === a;
// 드 모르간의 법칙
!(a || b) === !a && !b;
!(a && b) === !a || !b;
// 그 밖에...
a || true === true;
a || false === a;
a && true === a;
a && false === false;
a || !a === true;
a && !a === false;
a || a === a;
a && a === a;
truthy & falsy
JS에서는 boolean 타입이 와야하는 자리에 다른 타입의 값이 와도 에러가 나지 않고 실행됩니다.
if (1) {
console.log('문제없이 실행됩니다.'); // if()안에 들어있는 인자값이 true 일때 해당 구문이 실행되는데 true는 값이 있다는 뜻을 의미합니다.
}
if (0) {
console.log('실행 되지 않습니다.'); // if()안에 들어있는 인자값이 false 일떄는 해당 구문이 실행되지 않습니다. 0은 값이 없다는 의미로 false와 같습니다.
}
if ("0") {
console.log('그럼 이거는?'); // 이 구문은 실행됩니다. 0인데 왜 실행이 되냐면 ""처리를 하게되면 문자열로서 0이기에 값을 가짐으로 실행이됩니다.
}
이렇게 어떤 값들로 true로, 어떤 값들은 false로 취급되는데, 전자를 truthy
후자를 falsy
라고 부릅니다.
JS에서는 false
, null
, undefined
, 0
, NaN
, ''
을 falsy로 취급하고 이를 제외한 모든 값을 truthy라고 합니다.
truthy와 falsy를 활용하면 짧은 코드를 작성할 수 있지만, 코드의 의미가 명확하지 않거나 논리적이지 못할 수 있기에 주의해서 사용해야 합니다.
다른 타입의 값을 진리값으로 변환하기
!!'hello'; // true - !(NOT)을 이용하여 문자열을 진리 값으로 변환 (보통 이런 방법을 많이 사용합니다.)
Boolean('pizza'); // true - Boolean()메소드를 이용하여 문자열을 진리 값으로 변환
2. Today I Found Out
문자열 타입에 이어서 이 전에 승하쌤께서 강의해주신 부울 타입까지 공부하면서
지금까지 알던 것은 정리가 되었고, 모르던 것들에 대해서는 알게 되었습니다.
논리 연산자는 if문과 switch문등 다양한 제어구문에서도 활용이 가능하고,
로직 구성에 있어서 유용하게 사용하기에 꼭 알고 가도록 더 공부하겠습니다.
3. refer
https://helloworldjavascript.net/pages/150-boolean.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
https://stackoverflow.com/questions/7615214/in-javascript-why-is-0-equal-to-false-but-when-tested-by-if-it-is-not-fals