JAVA script
[JavaScript] 형 변환 ( Type Conversion ) / 참과 거짓 (Truthy & Falsy )
peach_h
2023. 5. 6. 18:15
1. 형 변환 ( Type Conversion )
JavaScript에서 동등 연산자(==)를 사용할 때, 자동 형변환이 발생한다.
// 형변환
const a = 1
const b = '1'
// 일치 연산자
console.log(a === b)
// 동등 연산자 ( 형변환이 일어난다 )
console.log(a == b)
변수 a의 값은 숫자고, b의 값은 문자열이지만 동등 연산자를 사용하였을 때,
형변환이 일어나 b가 숫자일때 a와 값이 동일해짐으로결과가 true로 나타난다.
이렇게 동등 연산자는 형변환이 일어날 수 있기 때문에, 일치 연산자를 사용하는 것이 안전하다.
Boolnea 자동 형변환
JavaScript에서 true는 1로, false는 0으로 형변환이 발생한다.
const a = true
const b = 1
console.log(a === b)
console.log(a == b)
const a = 0
const b = false
console.log(a === b)
console.log(a == b)
// Boolean 형변환
let str = "hello"
let bool = true
console.log(`str + bool = ${str + bool}`) // 문자열로 형변환 되어 계산
console.log(`str - bool = ${str - bool}`) // NaN (Not-a-Number)
console.log(`str * bool = ${str * bool}`) // NaN (Not-a-Number)
// true: 1, false: 0 으로 형변환
console.log(`3 + Number(true) = ${3 + Number(true)}`)
console.log(`3 + true = ${3 + true}`)
console.log(`3 + false = ${3 + false}`)
문자열과 Boolean이 만났는데 연산자가 +일 경우, 문자열로 취급된다.
+이외에 다른 연산자가 사용되었을 경우 Nan이 출력된다.
2. 참과 거짓 ( Truthy & Falsy )
JavaScript에서 if 조건을 통과하는 데이터는 참이다.
참인 경우 예시
if (true) {
console.log('참')
}
// if 조건을 통과하는 데이터는 참이다 -> truthy
if (123) {
console.log('참')
}
JavaScript는 if 조건문에 숫자를 넣으면 참으로 취급한다.
but 모든 숫자가 참인 것은 아님 !
참이 아닌 경우
// 모든 숫자가 truthy인 것은 아님
if (0) {
console.log('참')
}
0의 경우 참이 아닌 것으로 취급한다.
하지만 문자열 '0'은 참이다.
// 문자 0은 참이다
if ('0') {
console.log('참')
}
이렇게 헷갈리는 경우가 많은데 . .
뭐가 참이고 뭐가 거짓인지 어떻게 알까?
-> Falsy에 해당하는 값 7개만 외우자 !
Falsy에 해당하는 값
1. false
2. 숫자 0
3. null
4. undefined
5. NaN
6. " " (빈문자데이터)
7. 0N(Bigint)
배열은 무조건 참일까?
const fruits = ['Apple', 'Banana']
if(fruits) {
console.log('과일이 있어욤')
}
배열 데이터는 참이라 if 조건문에 넣었을 때 값이 잘나온다.
배열이 비어있다면 ?
const fruits = []
if(fruits) {
console.log('과일이 있어욤')
}
빈 배열도 참으로 취급해서 조건문이 잘나온다 !
하지만 빈 배열에 length를 찍으면 거짓이다.
const fruits = []
if(fruits.length) {
console.log('과일이 있어욤')
}
빈 배열 그 자체는 참이지만, 빈 배열의 length는 거짓이라는 점 !
자바스크립트는 이렇게 참 거짓이 헷갈리는 경우가 많은 것 같다.
오늘 공부한 것을 잘 기억해보ㅈ ㅏ !!