상수/변수 선언
- var대신 상수는- const변수는- let을 사용
- 실제 개발에서는 const를 주로 사용하게 될 것
- const는 재할당 불가능하지만 내부 속성값은 수정 가능
const tom = {
  "lang": "Python"
};
console.log(tom["lang"]);  // Python
tom.lang = "JavaScript"
console.log(tom["lang"]);  // JavaScriptObject 선언
- 파이썬에서처럼 문자열로 이루어진 key를 따옴표로 묶지 않아도 된다.
- 아래 tom1과 tom2는 동일
let tom1 = {
  name: "Tom",
  age: 10,
  region: "Seoul"
};let tom2 = {
  "name": "Tom",
  "age": 10,
  "region": "Seoul"
};- Key 이름 연산이 필요한 경우엔 대괄호로 묶어야 한다.
const tom = {
  "name": "Tom",
  "age": 10,
  "region": "Seoul",
  ["score" + "1"] : 100
};참고) 파이썬이었다면?
tom = {
  "name": "Tom",
  "age": 10,
  "region": "Seoul",
  "score" + "1" : 100
}- 선언한 변수를 Key 이름으로 사용하려면 대괄호로 묶어야 한다.
const key1 = "location";
const tom = {
  name: "Tom",
  [key1]: "Seoul"
};참고) 파이썬이었다면?
key1 = "location"
tom = {
  "name": "Tom",
  key1: "Seoul"
}- Key와 값 이름이 동일하면 단축해서 사용할 수 있다.
- 아래 tom1과 tom2는 동일
let name = "Tom";
let age = 10;
let tom1 = {
  name: name,
  age: age
}
let tom2 = {
  name,
  age
}객체 복사
- 객체나 배열을 대입했을 때 얕은 복사(Shallow Copy)가 일어나므로 대입 이후 원 객체에서 변화한 값도 반영된다.
const obj1 = {value1: 10};
const obj2 = obj2
obj1.value1 += 1;이때 obj2의 value1 값도 obj1을 따라서 11이 된다.
깊은 복사처럼 대입 후에는 영향이 없도록 별개 객체로 만들어줄 수도 있다.
const obj1 = {value1: 10};
const obj3 = JSON.parse(JSON.stringify(obj1));
obj1.value1 += 1;이때 obj3.value1은 그대로 10이다.
Template Literals
- 문자열 여러 줄을 표현할 때 백틱 사용
`string text line1
string text line2`- 선언한 변수를 대입하고 싶을 때는 달러사인과 중괄호 사용
`string text ${expression} line1
string text line2`참고) 파이썬이었다면?
'''string text line1
string text line2'''f'''string text {expression} line1
string text line2'''배열 비구조화
- 리액트에서 자주 쓰는 문법!!!
// "Tom"만 name에 할당
let [name] = ["Tom", 10, "Seoul"];
// 10만 age에 할당
let [,age,] = ["Tom", 10, "Seoul"];
// height에는 undefined 할당
// ValueError 같은 건 나지 않는다... 띠용
let [name, age, region, height] = ["Tom", 10, "Seoul"];
// height에는 지정한 default값 할당
let [name, age, region, height=150] = ["Tom", 10, "Seoul"];- default 값을 함수로 지정할 수도 있다. default 값이 필요할 때, 즉 undefined 상황에서 함수를 호출한다.
function get_default_height() {
  return 150;
}
// get_default_height 함수를 호출해 height에 함수 리턴값(150)을 할당
let [name, age, region, height=get_default_height()] = ["Tom", 10, "Seoul"];