논리 연산자
- 논리 연산자는 우항과 좌항의 피연산자(부정 논리 연산자의 경우 우항의 피연산자)를 논리연산 한다.
- || : 논리합(OR)은 둘 중 하나만 true여도 true를 반환한다. -> 좌항의 피연산자가 true이면 단축평가 (//true)
마지막 Falsy 값 혹은 처음 만난 Truthy 값을 반환한다.
- && : 논리곱(AND)은 둘 모두 true일 때만 true를 반환한다. -> 좌항의 피연산자가 false이면 단축평가 (//false)
마지막 Truthy 값 혹은 처음 만난 Falsy 값을 반환한다.
- ! : 부정(NOT)
드모르간 법칙
!(x || y) === (!x && !y)
!(x && y) === (!x || !y)
문제
false || true
true && false
!true
!((true && false) || (true && false))
let x = 10
!((x % 5 == 0 && x % 2 == 0) || (x / 2 == 5 && false))
let y = 10
(false && y % 2 == 0) && (y / 2 == 5 && false)
let z = 3
(true && z % 3 == 0) || (z / 2 !=!= 5 && false)
let job = true;
job && '완료' || '미완료';
let job = false;
job && '완료' || '미완료';
타입 변환
1. boolean 타입으로의 변환
- 숫자, 문자열, 객체 등은 불리언 타입으로 변환 가능하다
- Boolean()
Boolean() 생성자 함수를 new 연산자 없이 호출하여 불리언 타입으로 변환하는 방법
Boolean('')
Boolean(' ');
Boolean(0);
Boolean(3);
Boolean(-1);
Boolean({});
Boolean([]);
Boolean(Symbol());
- !!
부정 논리 연산자(!)를 연달아 두 번 사용하여 불리언 타입으로 변환하는 방법 , 이중부정을 통해서 원래의 boolean 타입을 반환하는 방법
!!true
true
!!'Kim'
true
!!''
false
!!' '
true
!!1
true
!!0
false
!!null
false
!!undefined
false
!!NaN
false
2. string의 number로의 타입 변환
- parseInt()
문자열 인자를 정수로 반환하는 함수
parseInt('123');
parseInt('123sdf');
- Number()
- 숫자 값으로 변환해주는 래퍼(wrapper)객체.
- 생성자로 사용하지 않으면(new 연산자를 사용하지 않으면) 형변환을 할 수 있다.
- 합목적성을 따졌을 때, 숫자로 형변환 할 때는 Number()보다 parseInt()를 사용하는 게 맞음
- +x
let x = '10000';
+x;
x;
x = +x;
x;
- parseInt()는 숫자로 변환할 수 있는 것까지만 변환하여 숫자를 반환하지만, + 방법은 변환할 수 없는 문자가 있을 경우 NaN을 반환
let x = '123abc';
passeInt(x); // 123
+x; // NaN