let 으로 선언
변할 수 있는 값이다.
const
절대로 바뀌지 않는 상수, 대문자로 선언함
tip 일단 let으로 선언하고 바뀌지않은 상수만 const로 선언
# 1. 문자형
const name = "Mike";
const message = `My name is ${name}`;
///이런 식으로 출력한다.
# 2. 숫자
const age = 30;
# 3.Boolean
const a = true ;
const b = false ;
# null과 undefined
let user = null;
# typeof
const name = prompt("이름을 입력하세요.");
alert("환영합니다, " + name + "님");
alert(`안녕하세요 ${name} 님`);
prompt는 항상 문자열을 변환한다. 따라서 Number()로 변환해주어야한다.
함수는 한번에 한 작업만 집중해서 사용할 것.
어디서든 호출이 가능하다. 즉 호이스팅이 가능하다.
sayHello();
function sayHello(){
console.log('hello');
}
// 오류 없음
let add = funtion(num1, num2){
retrun num1 + num2;
}
let add (num1, num2) => {
return num1 + num2;
}
//한줄일때 리턴 생략 가능. {}를 ()변경 가능.
let add (num1, num2) => (
num1 + num2;
)
//한줄이면 괄호 자체 생략 가능
let add (num1, num2) => num1 + num2;
아주 간결함.
화살표함수는 this를 가지고 있지 않음.
const superman = {
name = 'clark',
age = 30,
}
superman.name
superman[age]
superman.hairColor = 'black';
superman['hobby'] = 'football';
delete superman.name;
delete superman[age];
function makeObject(name, age){
return {
name,
age,
hobby : 'fooball'
};
}
const Mike = makeObject("Mike", 30);
console.log('birthday' in Mike);
fruits.push("orange"); // 배열 끝에 추가
fruits.unshift("grape"); // 배열 앞에 추가
fruits.pop(); // 배열 끝에서 삭제
fruits.shift(); // 배열 앞에서 삭제
days = ['mon', 'tue', 'wed']
days.push("thu")
days.unshift("sun");
//length()로 반복
for(let i = 0; i < days.length; i++){
console.log(days[index]);
}
//of 사용
for(let day of days){
console.log(day);
}
객체를 그대로 변수에 대입하면 참조가 되기 때문에 복제가 아니다.
따라서 Object.assign 메소드를 사용해서 복제한다.
let n = "name";
let a = "age";
const user = {
[n] : "Mike", //동적으로 변수에 할당.
[a] : 30,
[1+4] : 5, //계산 식도 가능하다
};
const user = {
name : "Mike",
age : 30,
};
const user2 = Object.assign({}, user);
//객체 복사 및 병합
console.log(Object.keys(user)) // [name, age]
//값 배열 반환.
Object.values(user) // ["Mike", 30]
//벨류값 반환
Object.entries(user)
//[["name", "Mike"],["age",30]]
----------------------------
let arr = [
["mon", "월"],
["tue", "화"],
];
const result = Object.fromEntries(arr);
// 결과 : {mon :"월", tue :"화"}
// 배열을 객체로 만들어준다.
유일한 식별자를 만들때 사용한다.
const a = Symbol();
const b = Symbol();
//유일성이 보장된다.
const id = Symbol('id');
const id2 = Symbol('id');
id != id2 이다.
Object.keys(), Object.values(), Object.entries()
위에서 배운 오브젝트 프로퍼티들은 심볼을 무시한다.
주로 객체의 키로 사용되며, 다른 코드에서 접근하지 못하도록 숨기고 싶을 때 유용합니다.
const id = Symbol.for('id');
const id2 = Symbol.for('id');
id == id2 이다.
toString()
10 진수 -> 2진수/16진수
let num = 10;
num.toString(); // "10"
num.toString(2); // "1010"
num.toString(16); // "A"
Math.PI;
//3.14...
Math.random() //난수 생성
Math.floor()
Math.ceil()
Math.round() //반올림
or
Number(변수.toFixed(진수형)); //toFixed는 문자형을 반환한다.
let x = Number('x'); // NaN
isNaN(x) // true
//오직 이로만 NaN을 검출할 수 있다. 나머지는 다 False나옴
parseInt("10px") // 10, 문자가 섞여있어도 문자를 숫자를 반환한다.
parseInt(바꿀 숫자,그숫자의 원래 진수형) //출력은 10진수로 변환된다.
let [a,b] = [1,2]
//즉 a와 b에 1과 2를 순서대로 대입한다.
let [a,b,c] = [1,2] //이 경우 c는 undefined
let [a=3, b=2, c=5] = [1,2] // 초깃값 설정으로 문제해결.
let [user1, ,user2] = ['Mike', 'Tom', 'Jane', 'Tony']
// Mike, Jane 입력.
//, ,로 정하면 그 인덱스는 무시되고, 넘치는 값들은 무시된다.
let a = 1;
let b = 2;
[a,b] = [b,a]
//쉽게 변경 가능.
let user = {name : "Mike", age : 30};
let {name, age} = user;
// let name = user.name;
// let age = user.age;
let {name: userName, age: userAge} = user;
//새로 이름을 지을 수 있음.
// userName = "Mike" 고 userAge = 30이 된다.
let {name, age, gender = "male"} = user;
// 똑같이 이렇게 기본값을 지정해야함. 근데 이미 있는 값이면 기본값이 지정 안된다.