JavaScript

불리언

마라랑랑 2022. 5. 23. 21:13

불리언

불리언(boolean)은 참(true)과 거짓(false)을 나타내는 데 사용된다.

 

ON: True

OFF: False

 

두가지 타입으로 나뉨

 

console.log(Boolean('STRING')); true
console.log(!!'STRING');  true
console.log(!!0); false
console.log(!!1); true

 객체를 Boolean으로 감싸서 true 나 false 값을 나타냄

! 부정연산자 ← true 값을 false값으로 나타냄

!! 부정연산자를 두 번 사용하여 boolean으로 사용할 수 있다.

 

논리연산자

Logical Operator (논리 연산자)
 * OR - || (또는)
 * AND - && (그리고)
 * NOT - ! (부정)
console.log(true || true); true
console.log(false || true); true
console.log(false || false); false

논리식 중에서 하나라도 참이면 참을 반환함 (OR 연산)

 

console.log(true && true); true
console.log(false && true); false
console.log(false && false); false

논리식이 모두 참이면 참을 반환함. (AND 연산)

 

const age = 20;
const genderType = 'GIRL';

const isAdult = age > 19;
const isGirl = genderType === 'GIRL';

if (isAdult === false) {
	console.log('나는 성인이 아니다');
}

if (isAdult && isGirl) {
	console.log('나는 성인이다!');	나는 성인이다!
}

if (!isAdult || isGirl) {
	console.log('나는 여학생이다');	나는 여학생이다
}

if 조건문에서의 논리연산자 사용

 

function getName(firstName, lastName) {
	const fName = firstName || '성 없음';
	const lName = lastName || '이름 없음';

	console.log(!!undefined || !!'이름 없음'); true

	return '저는 ' + fName + ' ' + lName + '입니다';
}

console.log(getName('김')); 저는 김 이름 없음입니다

(!!undefined) 가 false를 나타내고 (!!'이름 없음') 가 true값을 나타내므로 OR연산을 통하여 참인 문자열인 이름없음을 뽑아 낼 수 있다.

 

== vs === (비교 연산자)

== → 느슨한 비교

=== → 엄격한 비교

 

console.log('1' == 1, '1' === 1); true false
console.log(0 == [], 0 === []); true false
console.log(0 == '', 0 === ''); true false
console.log('' == [], '' === []);   true false

동등 연산자는 두개를 사용했을때와 세개를 사용했을때 다른값이 나오기 때문에 주로 세개를 사용하기를 권장한다.

 

Truthy

참 같은 값

불리언 문맥에서 true로 평가되는 값이다.

 

if (true) {
	console.log('참 입니다');	참 입니다
}

if ({}) {
	console.log('참 입니다');	참 입니다
}

if ([]) {
	console.log('참 입니다');	참 입니다
}

if (42) {
	console.log('참 입니다');	참 입니다
}

if ('0') {
	console.log('참 입니다');	참 입니다
}

if ('false') {
	console.log('참 입니다');	참 입니다
}

if (new Date()) {
	console.log('참 입니다');	참 입니다
}

if (-42) {
	console.log('참 입니다');	참 입니다
}

if (12n) {
	console.log('참 입니다');	참 입니다
}

if (3.14) {
	console.log('참 입니다');	참 입니다
}

if (-3.14) {
	console.log('참 입니다');	참 입니다
}

if (Boolean(Infinity)) {
	console.log('참 입니다');	참 입니다
}

if (!!-Infinity) {
	console.log('참 입니다');	참 입니다
}

console.log([] && 'Hello');	Hello

위와 같이 다양한 값들이 Boolean으로 True값을 나타낸다

 

Falsy

거짓 같은 값

불리언 문맥에서 false로 평가되는 값이다.

const emptyString = '';

if (emptyString === '') {
	console.log('문자열이 비어있음');	문자열이 비어있음
}

if (!emptyString.length) {
	console.log('문자열이 비어있음');	undefined
}

if (!emptyString) {
	console.log('문자열이 비어있음');	문자열이 비어있음
}

' ' 와 0 이 false 취급되었다.

 

if (false) {
} else {
	// 실행
}
if (null) {
} else {
	// 실행
}
if (undefined) {
} else {
	// 실행
}
if (0) {
} else {
	// 실행
}
if (-0) {
} else {
	// 실행
}
if (0n) {
} else {
	// 실행
}
if (NaN) {
} else {
	// 실행
}
if ('') {
} else {
	// 실행
}

전부 false 값으로 else 구문에서 실행된다.