=
은 수학적인 같다와는 다르다. '할당'의 의미를 가지고 있다. 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