본문 바로가기
개발 공부 일지/JavaScript

자바스크립트 - 자료형 (Data Type), 연산자

by yelimu 2024. 7. 19.

데이터 타입이 유연하다 = 상황에 따라 변할 수 있다

'2' + 3 = '23'

2 * '3' = 6 

머 지맘대루에요?

 

 

자료형 분류

기본형 Primitive type : Number String Boolean Null Undefined Symbol BigInt

참조형 Reference type : Object


Symbol 은 그 어떤 값과도 같지 않은 = 고유한 값이다

const user = Symbol('this is a user');

user === 'this is user'; // false
user === 'user'; // false
user === 'Symbol'; // false
user === true; // false
user === false; // false
user === 123; // false
user === 0; // false
user === null; // false
user === undefined; // false
...
const symbolA = Symbol('this is Symbol');
const symbolB = Symbol('this is Symbol');

console.log(symbolA === symbolB); // false

 

자바스크립트의 '안전한' 숫자 범위 : +- (2**53 -1) 

이 보다 더 큰 '정수'를 사용할때는 BigInt 를 사용한다 

숫자 뒤에 n을 붙이거나 BigInt 함수 사용

1) 소수 표현 안됨 2) 동일 자료형끼리 연산 3) 서로 다른타입 시 명시적으로 타입 변환


typeof 연산자 + 공백 또는 괄호 

 

null 의 타입은 object로 출력

typeof null; // object

 

함수를 객체로 취급하지만 type 은 function 으로 출력

function sayHi() {
  console.log('Hi!?');
}
typeof sayHi; // function


Falsy Truthy 도 이런 유연한 자료형이라는 특징에서 온다

 

for (let i=4; i; i = i -2 ){...}

라는 반복문 조건에서 i = 0 이 되면 0이 falsy이기 때문에  조건문이 false가 된다 -> 중단

 

Number(문자열)  -> NaN = falsy

 

Boolean() 함수로 출력해보면 False/True 로 출력

 

https://memoryelim.tistory.com/84

 

자바스크립트 - 조건문 Falsy, Truthy

실습하다가 이해가 안되는 부분에 대해 아래와 같이 답변이 있었다! javascript의 조건식은 유연한 편입니다.문자열이 조건식으로 사용되면 true로 식별됩니다. (빈문자열 ""은 false) 만약에 'data-tit

memoryelim.tistory.com


?? : null 병합 연산자

 

const example1 = null ?? 'I';
const example2 = undefined ?? 'love';
const example3 = 'Codeit' ?? 'JavaScript';

console.log(example1, example2, example3); // ?

 

OR 연산자랑 비슷할 수 있는데 

왼편의 값이 null이나 undefined인지 확인하고 OR 연산자(||)는 왼편의 값이 falsy인지를 확인하기 때문에

아래 코드와 같이 null이나 undefined가 아닌 falsy 값을 활용할 때 결과가 서로 다르다

 

const title1 = false || 'codeit';
const title2 = false ?? 'codeit';

console.log(title1); // codeit
console.log(title2); // false

const width1 = 0 || 150;
const width2 = 0 ?? 150;

console.log(width1); // 150
console.log(width2); // 0

 

▶ 어떤 변수가 null이나 undefined일 때는 기본값을 출력하게 함으로써 오류를 예방