데이터 타입이 유연하다 = 상황에 따라 변할 수 있다
'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일 때는 기본값을 출력하게 함으로써 오류를 예방
'개발 공부 일지 > JavaScript' 카테고리의 다른 글
자바스크립트 - 함수 (1) | 2024.07.19 |
---|---|
자바스크립트 - 변수 (0) | 2024.07.19 |
자바스크립트 - 키보드 이벤트 / 포커스 이벤트 (input 태그) /입력 이벤트 / 스크롤 이벤트 (0) | 2024.07.18 |
DOM - 브라우저 렌더링 (0) | 2024.07.18 |
자바스크립트 - 조건문 Falsy, Truthy (0) | 2024.07.18 |