'use strict';
바닐라 자바스크립트로 프로그래밍할 때는 파일 제일 위에 입력!
let
이용하여 변수 선언
variable은 메모리에 읽고 쓰는 것이 가능
let name='abc';
console.log(name);
-> abc 출력
name ='hello';
console.log(name);
name이라는 변수에 hello값을 다시 할당
-> hello 출력
어플리케이션 실행하게 되면 어플리케이션 마다 쓸 수 있는 메모리가 할당됨.
메모리는 텅텅 비어져있는 박스들. 어플리케이션마다 쓸 수 있는 박스들의 개수가 제한적.
age = 4;
var age;
값을 선언함과 동시에 할당한 뒤로는 값을 절대 변경할 수 없음 / 읽기만 가능
const minNumber = 3;
primitive
더 이상 작은 단위로 나뉘어질 수 없는 한가지 아이템
value 자체가 메모리에 저장됨
number, string, boolean, null, undefined, symbol
object
싱글 아이템들을 여러개 묶어서 한 단위로, 한 박스로 관리
너무 커서 메모리에 한번에 다 못올라감
object를 가르키는 reference가 메모리에 저장됨.
즉 name:'yosi'와 age:20이 저장됨.
const yosi ={name:'yosi', age:20};
나이를 변경하고 싶다면
yosi.age=21;
한번 할당된 오브젝트는 다른 오브젝트로 변경 불가
function도 데이터 타입 중 하나
first-class-function이 지원된다 = 이 프로그래밍 언어에서는 펑션도 다른 데이터 타입처럼 변수에 할당가능하고, 함수의 파라미터(인자)로도 전달되고 함수에서 return 타입으로도 펑션을 리턴할 수 있다.
양수를 0으로 나누게되면 infinity
음수를 0으로 나누게되면 -infinity(negativeInfinity)
숫자가 아닌 string을 숫자로 나누면 NaN (not a number)
const greeting = 'hello' + asahi;
//+ 기호를 사용하여 일반 string과 다른 변수를 붙일 수 있음//
//template literals (string)//
const hiName =`hi ${asahi}!`;
//hi와 변수의 값이 자동적으로 붙여져서 나옴 //
//hi asahi!로 출력 됨//
false : 0, null, undefined, NaN, ''
true : any other value
null값이 할당
let nothing = null;
선언은 되었지만 값이 지정되지 않은 것 (미정의 상태)
let X;
map이나 자료구조에서 고유한 식별자가 필요하거나
동시다발적으로 일어날 수 있는 코드에서 우선순위 주고 싶을 때
정말 고유한 식별자가 필요할 때 사용
같은 string으로 작성했어도 고유한 symbol이 됨!
항상 symbol.description 으로, string으로 변환해서 출력
: dynamically typed language
선언할 때 어떤 타입인지 선언하지 않고,
프로그램이 동작할 때 할당된 값에 따라서 타입이 변경될 수 있다는 것