let name = "Mike";
const age = 30;
자료형
형변환
기본 연산자
let num = 10;
let result = ++num;
console.log(result); // 11
let result2 = num++;
console.log(result2); // 10
// 강의 내용이랑 다름 뭐지 ?
for (let i = 0; i < 10; i++) {
console.log(i); // 0~9
}
let i = 0;
while (i < 10) {
console.log(i);
i++; // 0~9
}
function sayHello(prop) {
console.log(`Hello, ${prop}`);
}
sayHello("jaechang");
sayHello("chang");
let msg = "welcome";
function sayHello(newName) {
let msg = "Hello";
console.log(msg + " " + newName); // Hello Mike
}
sayHello("Mike");
console.log(msg); // welcome
함수 선언문, 함수 표현식
객체
function makeObject(name, age) {
return {
name,
age,
hobby: "football",
};
}
const Mike = makeObject("Mike", 30);
console.log(Mike); // Object { name: "Mike", age: 30, hobby: "football", }
// const 라서 superman 자체는 변경 불가능 하지만 안의 키 값들은 변경 가능하다.
const superman = {
name: "clark",
age: 30,
};
for (let key in superman) {
console.log(key); // name, age
console.log(superman.key); // "clark", 30
}
const spiderman = {
name: "Tom",
age: "25",
strong: function () {
console.log("강하다.");
},
};
const user = {
name: "Mike",
sayHello: function () {
console.log(`Hello, I'm ${this.name}`);
},
};
let boy = {
name: "Mike",
sayHello: () => {
console.log(this); // 전역객체를 가리킨다. (브라우저 환경 : window, Node.js : global)
},
};
boy.sayHello(); // this != boy
let age = 30;
function showAge() {
console.log(age);
let age = 20;
}
showAge(); // error : let 가 호이스팅 되서 TDZ 에 영향을 받기 때문에
function User(name, age) {
// this {} : 빈 객체이다.
this.name = name;
this.age = age;
// return this;
}
let a = "age";
const jaechang = {
name: "jaechang",
[a]: 28, // [a] = age 이다. 따라서 age: 28
};
function makeObj(key, val) {
return {
[key]: val,
};
}
const obj = makeObj("성별", "male");
console.log(obj); // {성별: "male"}
// 빈 객체에 user의 값을 넣어서 newUser 객체를 완성시킨다.
const newUser = Object.assign({}, user);
// user에 user1,2 를 넣어서 복제한다.
const superUser = Object.assign(user, user1, user2);
const objj = {
1: "1입니다.",
false: "거짓",
};
Object.keys(objj); // ["1", "false"]
obj["1"]; // "1 입니다."
obj["false"]; // "거짓"
const ab = Symbol("id"); // new 를 붙이지 않는다.
const ba = Symbol("id");
console.log(ab); // Symbol("id")
console.log(ba); // Symbol("id")
// ab !== ba, ab != ba
// 출력은 같은 Symbol() 이지만 둘은 같지 않다!
Symbol.for() : 전역 심볼
Number 과 Math
// 먼저 100을 곱한뒤 반올림을 해주고 다시 100을 나눠준다.
let userRate = 30.1234;
Math.round(userRate * 100) / 100; // 30.12
// 문자열을 반환하기 때문에 반드시 숫자형으로 다시 바꿔줘야 한다.
userRate.toFixed(2); // 30.12
// isNaN() : NaN 인지 판별해줌, NaN === "x" // false , isNaN("x") // true
let arr = [27, 8, 5, 13];
// 8과 27 비교 : 8, 27, 5, 13
// 5와 8 비교 : 5, 8, 27, 13
// 13과 5 비교 : 5 ,8, 27, 13
// 13과 8 비교 : 5 ,8, 27, 13
// 13과 27 비교 : 5 ,8, 13, 27
arr.sort((a, b) => {
console.log(a, b);
return a - b;
});
let array = [1, 2, 3, 4, 5];
// forEach
let result = 0;
arr.forEach((num) => {
result += num;
});
console.log(result); // 15
// reduce 사용
// prev(누적 계산값) 0을 cur(현재값) 1과 더해준다.
// prev(누적 계산값) 1을 cur(현재값) 2과 더해준다.
// prev(누적 계산값) 3을 cur(현재값) 3과 더해준다.
// prev(누적 계산값) 6을 cur(현재값) 4과 더해준다.
// prev(누적 계산값) 10을 cur(현재값) 5과 더해준다.
// console.log(arrayResult) // 15
const arrayResult = arr.reduce((prev, cur) => {
return prev + cur;
}, 0); // 0 : 초기값
console.log(arrayResult); // 15
// 초기값으로 빈 배열을 만들어 준다.
// 나이가 19살 넘은 사람을 빈 배열에 넣어준다.
// 그 값을 리턴한다.
let userList = [
{ name: "Mike", age: 30 },
{ name: "Tom", age: 10 },
{ name: "Jane", age: 27 },
{ name: "Harry", age: 26 },
{ name: "Steve", age: 19 },
];
let userListResult = userList.reduce((prev, cur) => {
if (cur.age > 19) {
prev.push(cur.name);
}
return prev;
}, []);
let friend = ["Mike", "Tom", "Jane"];
let [friend1, firend2, firend3] = friend;
console.log(friend1, friend2, friend3); // "Mike", "Tom", "Jane"
let person = { name: "Mike", gender: "male" };
// let name = person.name;
// let gender = person.gender; 와 같다.
let { name, gender } = person;