일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- status code
- manytomanyfield
- on_delete
- wecode
- docker
- bcrypt
- 실행 컨텍스트
- 장고초기세팅
- javascript
- OSI7계층
- CORS
- 호이스팅
- node
- async/await
- Jest
- 프로미스
- westagram
- TypeError: this.boardRepository.createBoard is not a function
- JWT
- typescript
- rebase
- pm2
- 자바스크립트
- 스코프
- crud2
- Django
- django westagram
- 노드
- 트랜잭션
- nodeJS
- Today
- Total
될때까지
데이터타입, null병합연산자, falsy값, 논리연산자 본문
데이터타입
if({}=={}){
console.log(1)
};
자바스크립트 엔진은 memory heap과 call stack으로 구성되어있다. 자바스크립트의 데이터 타입에는 2가지가 있다.
- 기본형 : boolean, null, undefined, number, bigint, string, symbol
- 참조형 : object, array, function, 정규표현식 등
기본형은 불변값, 참조형은 가변값이다. 여기서 불변과 가변의 기준은 "메모리 영역"과 관련이 있는데 해당 키워드에 대해선 추후 정리하도록 하자. 위의 코드에서 object는 가변형이라고 했다.
-> 따라서 비교중인 두 object는 각각 다른 값을 가르키기 때문에 if안의 조건이 false가 되어 콘솔에 1이 찍히지 않는다.
truthy and falsy
if({}){
console.log(2)
};
if([]){
console.log(3)
};
- falsy값 : false, 0, -0, 0n, "", null, undefined, NaN
- (헷갈리는)truthy값 : true, {}, [], "0", "false", -42 등
자바스크립트에서 빈 객체는 truthy로 인식한다. (파이썬에서 [], (), {} falsy!!)
-> 따라서 if안의 조건은 truthy니까 콘솔에 2가 찍힌다.
-> 빈 배열도 truthy기 때문에 콘솔에 3이 찍힌다.
if(0==false){
console.log(4)
}
-> 자바스크립트에서 0은 falsy다. falsy == false는 true가 되서 콘솔에 4가 찍힌다.
if(0===false){
console.log(5)
}
- == : 값을 비교한다
- === : 값과 자료형까지 비교한다.
-> 두 피연산자의 유형이 다르기 때문에 콘솔에 5가 안찍힌다.
<미해결>
if([0]==false){
console.log(5)
}
[]은 truthy인데 안에 0이 있네? 값이 있다. 그러면 truth고 truth와 false는 같지 않으니 콘솔에 5가 안찍힐 것 같은데 콘솔에 5가 찍힌다 왤까???!!! 아직 이유를 모르겠지만 나중을 위해 정리해두자.
if ([0] == false) {
console.log(5)
}
console.log(!![0]) // true
console.log(true == false) // false
if (true == false) {
console.log(6)
} // 6 안찍힘
null병합연산자
console.log(0??1)
console.log(1??0)
console.log(1??1)
nullish 병합연산자 : a??b a가 null이나 undefined가 아니면 a를 반환하고 그 외의 경우에는 b를 반환한다.
-> 0은 falsy지만 null이나 undefined가 아니기 때문에 0을 찍는다.
-> 1을 찍는다.
-> 1을 찍는다.
논리연산자
console.log(1&&2)
console.log(1&&0)
- AND (&&) : 모두가 참일 때 true반환, 첫번째 falsy를 찾고 마지막 truthy를 반환한다.
- OR (||) : 하나라도 참일 때 true반환, 첫번째 truthy를 찾고 마지막 falsy를 반환한다.
-> 2
-> 0
console.log(1||0)
console.log(0||3||2)
-> 1
-> 3
'학습 > JavaScript, TypeScript' 카테고리의 다른 글
((비동기 처리방식)) 콜백, Promise, Async/await과 비동기 (0) | 2022.10.24 |
---|---|
((실행 컨텍스트)) 자바스크립트의 실행 컨텍스트, 호이스팅, TDZ, 스코프, 스코프 체이닝 (1) | 2022.09.26 |
split() (0) | 2022.08.25 |
map() (0) | 2022.08.25 |
HTML study :: 생활코딩 | WEB1 - HTML & Internet (36/36) (0) | 2022.05.19 |