//  여러가지 ES6 문법 소개 (1)
//
//  => ES6 문법은 JAVA Script 문법 중 하나로써 2015년에 발표되었다.
//
//  => ES6 문법은 이전 버전보다 쉽고 효율적으로 코드를 작성 할 수 있도록 대규모의 새로운 문법과 기능을 도입하였다.
//
//
//  1. var :  재선언 가능(o) / 재할당 가능(o)
//
//  => JAVA Script에서 기본적으로 사용하는 선언 & 할당 키워드.
//
var alpha = "alpha";
console.log(alpha);

var alpha = "알파";
console.log(alpha);

alpha = "알파";
console.log(alpha);

console.log("-----------------------------------");
//
//  2. let : 재선언 불가능(x) / 재할당 가능(o)
//
//  => 일반적으로 변수를 선언할 때 사용하는 변수선언 키워드.
//
let beta = "beta";
console.log(beta);

beta = "베타";
console.log(beta);

console.log("-----------------------------------");
//
//
//  3. const : 재선언 불가능(x) / 재할당 불가능(x)
//
//  => 일반적으로 상수를 선언할 때 사용하는 상수선언 키워드.
//
const gamma = "감마";

console.log(gamma);

console.log("-----------------------------------");
//
//
//  4. 화살표 함수 : Arrow Function
//
//  4-1. 일반함수
//
function Func_01() {
    return 0;
}

console.log("-----------------------------------");
//
//  4-2. 함수값 대입
//
var Func_02 = function () {
    return 0;
}

console.log("-----------------------------------");
//
//  4-3. 화살표 함수
//
var Func_03 = () => {
    return 0;
}

console.log("-----------------------------------");
//
//
//  5. 삼항 연산자
//
//  => 조건식 ? true 인 경우 : false 인 경우;
//
let result_01 = true ? "참" : "거짓";
console.log(result_01);

let result_02 = false ? "참" : "거짓";
console.log(result_02);

console.log("-----------------------------------");
//
//
//  6. 구조분해할당(destructuring) : de + structure + ing
//
//  => de(반대로 ~ ) + structure(구조) + ing( ~ 하는 것) : 구조를 반대로 해체하는 것.
//
//  => 즉, 구조분해 할당이란, 배열이나 객체의 속성을 분해하여 변수에 담는 문법이다.
//
//
//  6-1. 배열 구조분해할당
//
let [value_01, value_02] = [1, "new"];

console.log("1 번 : ", value_01);
console.log("2 번 : ", value_02);

console.log("-----------------------------------");

let Arr_01 = ["사과", "바나나", "초콜릿"];

let [Apple, Banana, Chocolate, Doughnut, Egg = "달걀"] = Arr_01;

console.log(Apple);
console.log(Banana);
console.log(Chocolate);
console.log(Doughnut);
console.log(Egg);

console.log("-----------------------------------");
//
//
//  6-2. 객체 구조분해할당
//
let User = {
    name: "김철수",
    age: 30,
    gender: "남성",
};

let {name, age, gender} = User;

console.log("이름 : ", name);
console.log("나이 : ", age);
console.log("성별 : ", gender);

console.log("-----------------------------------");

let Pet = {
    name: "흰둥이",
    age: 3,
    gender: "수컷",
    species: "강아지",
};

let {
    name: Dog_Name,
    age: Dog_Age,
    gender: Dog_Gender,
    species: Dog_Species,
} = Pet;

console.log(Pet.name);
console.log(Pet.age);
console.log(Pet.gender);
console.log(Pet.species);

console.log("-----------------------------------");

console.log(Dog_Name);
console.log(Dog_Age);
console.log(Dog_Gender);
console.log(Dog_Species);

console.log("-----------------------------------");

let player = {
    job: "기사",
    HP: "150",
    skill: "십자베기",
};

let { job, HP, MP = "80", skill, title } = player;

console.log("직업 : ", job);
console.log("체력 : ", HP);
console.log("마력 : ", MP);
console.log("스킬 : ", skill);
console.log("칭호 : ", title);

console.log("-----------------------------------");