let
message = 'ABC';
let message = 'ABC';
=
: 할당연산자. 같다는 의미가 아니고 대입(assign)하는 것camel case
: 변수 명에 공백을 사용할 수 없기 때문에 보통 각 합성어의 첫 글자를 대문자로 써 붙인다.let, const :
immutable
차이
- let (변수 재선언 불가능, 변수 재할당 가능)
let은 변수의 재할당은 가능하지만 var처럼 재선언은 불가능.let variable = '변수 선언함'; console.log(variable); // 변수 선언함. variable = '변수 재할당함'; console.log(vairable); // 변수 재할당함. let variable = '또 변수선언함'; console.log(variable); // 또 변수선언함. ---> 에러
- const (변수 재선언 불가능, 변수 재할당 불가능)
const는 constant(상수)의 의미 그대로 한 번만 선언함.const variable = '변수선언함'; console.log(variable); // 변수선언함. variable = '변수 재할당함'; console.log(variable); // 변수 재할당함 ---> 에러 const variable = '또 변수선언함'; console.log(variable); // 또 변수선언함 ---> 에러
let은 선언하고 나중에 값을 할당하는 것이 가능하지만, const는 선언과 동시에 값을 할당해야 함. 재할당이 필요없는 경우, const를 사용해 불필요한 변수의 재사용을 방지하자.
원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고, 해당 변수가 데이터 값을 보관한다.
원시 자료형은 모두 하나의 데이터만을 담고 있다.
값이 저장된 메모리 영역에 직접적으로 접근한다.
-> 변수에 새 값이 할당될 때, 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경한다는 뜻!
Access By Value
값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당
할 수는 있다.
string
, number
, bigInt
, boolean
, undefined
, (null)
크기가 정해져 있지 않고, 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없다.
변수에는 데이터에 대한 참조만 저장된다. (데이터가 들어있는 주소가 저장된다고 생각하자)
변수의 값이 저장된 힙Heap 메모리의 주소값을 저장한다. Access By Reference
객체(object)
, 배열(array)
, 함수(function)
참조 자료형의 데이터는 "heap"이라고 부르는 별도의 데이터 보관함에 저장되고,
변수에는 데이터가 저장된 메모리의 주소값이 저장된다.
원시 자료형과는 다르게 heap 안에 저장된 데이터는 원하는 대로 데이터 사이즈를 조정할 수 있다.
typeof 연산자
는 인수의 자료형을 반환한다.
자료형에 따라 처리 방식을 다르게 하고 싶거나 변수의 자료형을 빠르게 알아내고자 할 때 유용함. 타입 검사
연산자: typeof x
함수: typeof(x)
괄호가 있든 없든 결과는 동일.
typeof x
를 호출하면 인수의 자료형을 나타내는 문자열을 반환.
fuction 키워드, 함수 이름, 괄호로 둘러싼 매개변수를 차례로 써주면 함수를 선언할 수 있다.
// 이름이 있는 함수
function 함수이름(매개변수) {
//code
}
// 이름이 없는 함수
(매개변수) => {
//code
}
// 함수 선언식
function getRectangleArea(width, height) {
let rectangleArea = width * height
return rectangleArea
}
// 함수 표현식
const getRectangleArea = function(width, height) {
let rectangleArea = width * height
return rectangleArea
}
// 함수 표현식(화살표 함수 1)
const getRectangleArea = (width, height) => {
let rectangleArea = width * height
return rectangleArea
}
//화살표 함수는 함수의 바디에 리턴문만 있는 경우 리턴과 중괄호를 생략할수 있음
// 함수 표현식(화살표 함수 2)
const getRectangleArea = (width, height) => width * height;