데이터 타입
* primitive: 더 이상 작아질 수 없는 한 가지 단위 (single item)
* object: single item을 묶어서 한 박스로 관리할 수 있게 해준다. 오브젝트는 메모리에 탑재될 때, reference 형태로 저장된다.
const ellie1 = { name: 'ellie' };
const ellie2 = { name: 'ellie' };
const ellie3 = ellie1;
console.log(ellie1 == ellie2); // 다른 레퍼런스에 저장되어 있기 때문에 false
console.log(ellie1 === ellie2); // 똑같은 타입이던 아니던 레퍼런스 값이 다르기 때문에 false
console.log(ellie1 === ellie3); // true
* function: 자바스크립트에서는 function도 데이터 타입 언어 중에 하나이다. 즉, first class function이 지원이 된다. 이 말인 즉슨 function도 다른 데이터 타입처럼 할당이 가능하고 함수의 파라미터 인자도 가능하고 retunr 값이 될 수도 있다.
primitive | number |
string | |
boolean | |
null | |
undefiend | |
symbol | |
object | box container |
function | first-class function |
let vs Const
* let: ES6에서 추가된 변수 타입이다. var 대신에 let을 쓰는 것이 좋다. 읽고 쓰는 것이 가능하다.
* Const: 읽기만 가능하다. 선언하고 값을 할당한 이후론 바꿀 수 없다.
var를 쓰면 안되는 2가지 이유
let에서는 다른 언어와 비슷하게 좀 더 엄격하게 변수들을 관리할 수 있다. 하지만 var의 경우 보다 훨씬 유연하기 때문에 쓰는 것이 위험하다.
- hoisting: 어디 선언하는 상관없이 항상 변수를 끌어올려 최상단에 선언한다. 선언하기 전에 값을 할당할 수 있기 때문에 쓰면 안된다.
- block scope이 존재하지 않는다: 원래대로라면 블럭({})을 이용해서 변수를 선언하면, let의 경우 블럭 밖에서는 보이지 않는다. 하지만 var의 경우 블럭 안에서 선언한다고 하더라도 아무곳에서나 보일 수 있다. 이럴 경우 꼬이기 쉽기 때문에 쓰지 않는 것이 좋다.
immutable 데이터 타입을 사용해야 하는 이유
- 보안: 작성한 값을 해커들이 다른 값으로 변경하는 경우가 있을 수 있다.
- thread safety: 어플리케이션이 실행되면, 한 가지의 프로세스가 할당이 되고 프로세스 안에서는 다양한 쓰레드가 동시에 돌아가면서 어플리케이션을 좀 더 빠르게 실행할 수 있도록 도와준다. 이 때, 다양한 쓰레드들이 동시에 변수에 접근해서 값을 변경할 수 있어서 위험하다.
출처: 유튜브 드림코딩 by 엘리
'Front-end > Javascript' 카테고리의 다른 글
[Javascript] 배열에서 특정 값 찾기 (0) | 2022.03.31 |
---|---|
[Javascript] Callback, Promise, Async await 차이점과 사용법 (0) | 2022.03.19 |
[Javascript] 자바스크립트 class 기초 (0) | 2021.08.03 |
[Javascript] 자바스크립트 Function 기초 지식 (함수 선언, 표현, Callback, Arrow) (0) | 2021.08.03 |
[Javascript] HTML에서 script 태그 위치별 동작 원리 (+async, defer) (0) | 2021.08.03 |