var는 중복으로 변수를 선언 할 수 있고 개발자에게 혼동을 줄 수 있다. 그러므로 우리는 js로 개발시 주로 let을 사용하기로 하였다.
선언시 값을 반드시 메겨줘야 하고 read-only여서 같은 상수 이름으로 변수 재정의가 불가능하다.
// Truth
let a = "string";
a = Infinity;
a = "FALSE"
a = 1
if(a){
console.log("TRUE")
}
// print True
// False
a = undefined
a= null
a= ""
a= NaN
a = 0
if(a){
console.log("TRUE")
}else{
console.log("FALSE")
}
// print False
let person;
const name = getName(person);
console.log(name);
cont getName = (person) => {
if(!person){
// person === undefined || person === null 값을 동시에 처리해 주는것과 같다.
return "객체가 아닙니다"
}
return person.name;
};
let person;
const name = getName(person);
console.log(name);
cont getName = (person) => {
const name = person && person.name;
//person이 정의되어 있다면 사람 이름이 name변수에 메겨지고 아닌경우는 null
return person.name || "객체가 아닙니다";
// person.name이 true값이면 바로 이름을 반환한다.
};
console.log(functionA()); // 호이스팅
console.log(hello); // 호이스팅
function functionA(){ // 함수 선언식 (호이스팅이 안된다.)
return '안녕하세요 여러분';
};
let hello = function(){ // 함수 표현식
return '안녕하세요 여러분';
};
console.log(hello());
//화살표 함수
let helloA = () => "안녕하세요 여러분";
console.log(helloA());
function checkMood (mood, goodCallback , cryCallback){
if(mood === "good"){
goodCallback()
}else{
cryCallback()
}
}
function sing(){
console.log("ACTION :: SING")
}
function cry(){
console.log("ACTION :: CRY")
}
checkMood("sad", sing, cry)
자바의 상속과 같은개념
const cookie = {
base : "cookie"
,madeIn: "Korea"
}
const chocochipCookie = {
...cookie
,toping : "chocochip"
};
const blueberryCookie = {
...cookie
,toping : "blueberry"
};
const caramelCookie = {
...cookie
,toping : "caramel"
};
console.log(chocochipCookie);
console.log(blueberryCookie);
console.log(caramelCookie);
배열 합치기
const fruitsCookies = ["바나나" , "블루베리"]
const bakery = ["휘낭시에" , "마들랜"]
const allDesert = [...fruitsCookies , ...bakery];
console.log(allDesert)