값: 식이 평가되어 생성된 결과
리터럴: 사람이 이해할 수 있도록 약속된 기호를 사용해 값을 표기하는 방법
ex) 0x000000F2 -> 리터럴로 표시하면 3이 됨.
표현식: 값으로 평가될 수 있는 문
문과 식의 구별법 : 변수에 할당할 수 있으면 식이고, 아니면 문임
1. 문(statement)
if(){} // if문을 변수에 담을 수 없음.
function(){}
2.식(expression)
var a = 100;
var b = function(){}
//*함수는 크게 함수 선언문과 함수 표현식으로 만들 수 있다.
// 1.함수 선언문 (statement)
function name () {}
// 2.함수 표현식 expression(식): 함수선언을 "값 처럼" 활용해서 함수를 만드는 방식.
myBtn.addEventListener("click",function(){ //<-함수선언을 값처럼 활용하고 있음. 따라서 이거도 "함수표현식"임
consolg.log("gg");
});
//1.함수선언문: 호이스팅이 가능함
test1(); //aa출력
function test1(){
console.log("aa");
}
//2.함수표현식: 호이스팅이 불가능.(변수 호이스팅과 비슷. 선언만 되있고 메모리까지 준비되어 있진 않아 실행 불가능 한것임.)
test2(); //error남
const test2 = function(){
console.log("bb)
}
primitive type
1.numbr : infinity, NaN도 number type임!
2.string
3.boolean
4.undefined : 변수를 선언하고 초기화하지 않았을 때 나옴.
5.null : 변수에 값이 없다는 것을 의도적으로 명시할 때 사용.
6.symbol
reference type
1.object
2.array
3.function 등
데이터 타입을 구별하는 이유
1.값을 저장할 떄 확보해야 할 메모리 공간의 크기를 결정하기 위해
2.메모리에서 읽어 들인 2진수를 어떤 데이터 타입으로 해석할지 결정하기 위해.