데이터 타입
변수
1. let (read/write)
let name='apple';
console.log(name);
name='banana';
console.log(name);
=> apple
=> banana 출력
application을 실행시키면 각 application마다 사용할 수 있는 메모리가 제한적으로 할당된다.
한편 let은 다시 선언이 가능하다.
2. {}
만약 위의 코드가 { } 안에 있다면, 불러도 호출할 수 없다.
3. const (only read)
한 번 할당하면 변경이 불가능하다 (immutable)
이 const 변수를 사용함으로서 얻는 장점 3가지가 있다.
1 번째는 함부로 값을 변경할 수 없기 때문에 안전하다는 것이다.
2 번째는 thread safety 이다
프로그램이 실행될때 프로세스에서 다양한 쓰레드가 돌아가는 데 이때 동시에 변수에 접근해서 값을 변경할 수도 있다.
따라서 값이 변경할 수 없게 const를 사용하는 것이 좋다.
3. 실수
같은 변수명을 다시 선언하는 등과 같은 실수를 줄일 수 있다.
4. 변수 타입
primitive, single item: number, String, boolean
=> 값 자체로 변수에 저장됨
object, box container
=> single들을 하나로 묶어서 박스로 다룸
=> 값 자체로 저장되는 것이 아니라 ref가 object가 담겨 있는 곳을 포인터로 가리킴
function first-class function
function에서도 데이터 할당이 가능하다
string
문자는 다 string타입으로 할당이 된다.
boolean
false :0 null,undefined,Nan은 다 false로 간주된다
true: 그 외의 값은 다 true로 할당된다.
null
명환하게 값이 없이 비어있다는 것을 의미한다.
undefined
선언은 되었지만, 값이 지정되어 있지 않은 상태이다. 값이 비어 있는 지 아닌지도 모른다.
symbol
고유한 식별자를 만들 때 사용된다. 변수값이 같다고 할 지라도 같다고 생각하지 않는다.
만약 동일한 심볼을 만들고 싶다면 1,2,번째 라인처럼 적으면 된다.
출력할 때는 항상 마지막처럼 .description을 적어서 출력해야한다.
이것을 수행했을 때 3번째 라인의 값은 false가 나온다. 왜냐하면 비록 변수 명이 같지라도, sybol이 서로 다른 각각의 식별자로 생성이 되기 때문이다.
다이내믹 타이핑
위의 코드를 출력시 아래 처럼 나온다. 즉 처음에 string타입이였지만 1을 선언해주자 타입을 number로 바꿔준다.
또한 string 7과 number 5를 더하자 string으로 생각하고 12가 아니라 75를 출력한다.
자바스크립트는 runtime때 타입이 정해진다. 따라서 만약 8번째 줄처럼 작성하면 Runtime에러가 발생한다.
object
const hojin={name: 'hojin' , age:26};
hojin.age=20;
오브젝트는 박스 형태이고 hojin object는 이름은 hojin이고 나이는 26인 박스 형태로 만들 수 있다.