=은 수학적인 같다와는 다르다. '할당'의 의미를 가지고 있다. let num = 1;
num = num + 2; // 3
num = num + 3; // 6
num = num + 4; // 10
원시 자료형
변경 불가능한 값
변수에 할당된 string, number, undefined, boolean은 그 값 자체를 변경하는 것이 아니라 값을 재할당 하여 변경 할 수 있다.
참조 자료형
변경 가능한 값
object안에 있는 key,value 페어에 직접 접근해 변경하거나, Array의 값을 직접 변경 할 수 있다.
// 원시 자료형
let myName
typeof myName; // "undefined";
myName = 'reone';
typeof myName // "string";
typeof 123 // "number"
typeof true // "boolean"
typeof Symbol('123') // "symbol"
typeof null // "object"
// 참조 자료형
typeof [1,2,3] // "object"
typeof function(){} // "function"
실제로 null의 타입은 object로 나타난다.
MDN 공식문서에 따르면 한가지 타입으로 보이지만,
사실은 그냥 변경 불가능한 값(?)으로서 원시자료형으로 분류된다.
function, object등은 object type의 종류 이며, null을 이용해 초기화 된다.
null과 undefined
null : 그 값을 강제로 비움. 또는, 타입이 올바르지 않음
undefined : 그 값이 정해지지 않음
function greeting(name) { // 함수 선언식
return 'hello ' + name;
}
let sayGoodbye = function(name) { // 함수 표현식
return name + ' Goodbye';
}
let myName = 'jaewon';
greeting(myName); // 'hello jaewon'
sayGoodbye(myName); // 'jaewon Goodbye'
함수 내부에 선언된 변수는 외부에서 접근할 수 없다.
현재 스코프 레벨에 따라 접근할 수 있는 값과 다른 값이 있다.
클로저를 통해 접근할 수 있는 방법이 있다.
참고자료
MDN Javascript Type