변수
var
: 기준 범위는 함수
let
: 변하는 값일 때 사용, 기준 범위는 {}
const
: 상수(변하지 않는 값 사용), 기준 범위는 함수
function myTest() {
if (true) {
var x = 100;
}
console.log(x);
}
myTest();
function myTest2() {
if (true) {
const x = 100;
x = 200;
}
console.log(x);
}
myTest2();
템플릿 문자열
const name = '송재근';
const age = 27;
const height = 174;
console.log(`My name is ${name}
My age is ${age}
My Height is ${height}`);
객체
- 객체의 구성
1개의 데이터(= 프로퍼티)
=> 키(문자형) + 값 1쌍(모든 자료형)
let dic = new Object();
dic.boy = "소년";
dic.girl = "소녀";
dic.friend = "친구";
console.log(dic.boy);
console.log(dic.girl);
console.log(dic.friend);
let dic = {
boy: "소년",
girl: "소녀",
friend: "친구"
};
console.log(dic.boy);
console.log(dic.girl);
console.log(dic.friend);
let dic = {
boy: "소년",
girl: "소녀",
friend: "친구"
};
dic.apple = "사과";
dic.ten = 10;
console.log(dic.apple);
console.log(dic.ten);
let dic = {
boy: "소년",
girl: "소녀",
friend: "친구"
};
delete dic.girl;
console.log(dic.boy);
console.log(dic.girl);
console.log(dic.friend);
let dic = {
present: "현재"
};
console.log(dic.present);
dic.present = "선물";
console.log(dic.present);
- let -> const 수정 비교
dic은 참조형 메모리구조를 가짐
- 콜스택
에 있는 참조 주소(불변)
힙메모리
에 있는 데이터(변경 가능)
const dic = {
present: "현재"
};
console.log(dic.present);
dic.present = "선물";
console.log(dic.present);
const dic = {
present: "현재"
};
dic = {};
console.log(dic.present);
dic.present = "선물";
console.log(dic.present);
const unit = {
attack: function(weapon) {
return `${weapon}으로 공격한다.`;
}
}
console.log(unit.attack('주먹'));
console.log(unit.attack('총'));
const unit = {
attack(weapon) {
return `${weapon}으로 공격한다.`
};
}
console.log(unit.attack('주먹'));
console.log(unit.attack('총'));
let dic = {
boy: "소년",
girl: "소녀",
friend: "친구"
};
console.log(dic['boy']);
console.log(dic['girl']);
console.log(dic['friend']);
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let dic = {
boy: "소년",
girl: "소녀",
friend: "친구"
};
rl.question("찾을 단어를 입력하세요. ", function(key) {
let word = key;
console.log(word);
rl.close();
});
const readline = require("readline");
const rl1 = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl1.question("다이쓰! 무조건 천원, 상품입력? ", function(obj) {
let basket = {
[obj]: "1000원",
}
console.log(basket[obj]);
rl1.close();
});
let id = 'jamsu';
let pw = '1111';
let user = {
id: id,
pw: pw,
}
console.log(user.id);
console.log(user.pw);
let human = {
id: 'jamsu',
pw: '1111',
name: 'lch',
mobile: '010-1111-2222',
county: 'korea'
}
for (let info in human) {
console.log(`${info} : ${user[info]}`);
}
화살표 함수
let plus = (a, b) => {
return a + b;
}
let result = plus(10, 20);
console.log('두수의 합 : ' + result);
let plus2 = (a, b) => a + b;
let result2 = plus2(10, 20);
console.log('두수의 합 : ' + result2);
let plus3 = a => a + 2;
let result3 = plus3(10, 20);
console.log('값의 2증가 : ' + result3);
let plus4 = () => "플러스";
let result4 = plus4();
console.log('A ' + result4);
비구조화 할당
const color = ['red', 'green', 'blue'];
let r = color[0];
let g = color[1];
let b = color[2];
console.log(r);
console.log(g);
console.log(b);
let user = {
id: 'jamsuham',
pw: '1234',
nickname: '잠수함',
age: 30,
};
let id = user.id;
let pw = user.pw;
let nickname = user.nickname;
let age = user.age;
console.log(id);
console.log(pw);
console.log(nickname);
console.log(age);
const color2 = ['red', 'green', 'blue'];
let [r2, g2, b2] = color2;
console.log(r2);
console.log(g2);
console.log(b2);
const color3 = ['red', 'green', 'blue'];
let [r3, g3, b3] = color3;
[b3, g3, r3] = [r3, g3, b3];
console.log(r3);
console.log(g3);
console.log(b3);
[b4, g4, r4] = ['red', 'green', 'blue'];
console.log(r4);
console.log(g4);
console.log(b4);
const [a5, b5, c5] = ['C#', 'Java'];
console.log(a5);
console.log(b5);
console.log(c5);
const [a6, b6, c6 = "C++"] = ['C#', 'Java'];
console.log(a6);
console.log(b6);
console.log(c6);
const [a7, , c7, d7] = ['C#', 'Java', 'Python', 'C++'];
console.log(a7);
console.log(c7);
console.log(d7);
const [a8, b8, ...rest] = ['C#', 'Java', 'Python', 'C++', 'react'];
console.log(a8);
console.log(b8);
console.log(rest.length);
console.log(rest[0]);
console.log(rest[1]);
console.log(rest[2]);
const arr1 = ['C#', 'js'];
const arr2 = ['python', 'react', 'C++'];
const arr3 = [...arr1, ...arr2];
console.log(arr3);
let user2 = {
id2: 'jamsuham',
pw2: '1234',
name2: '잠수함',
age2: 30,
};
let {id2, pw2, name2, age2} = user2;
console.log(id2);
console.log(pw2);
console.log(name2);
console.log(age2);
let {id3, pw3, name3, age3} = {id3: 'jamsuham', pw3: '1234', name3: '잠수함', age3: 30,}
console.log(id3);
console.log(pw3);
console.log(name3);
console.log(age3);
let user4 = {
name4: '잠수함',
age4: 30,
};
let {id4 = 'guest', pw4 = '1234', name4, age4} = user4;
console.log(id4);
console.log(pw4);
console.log(name4);
console.log(age4);
let user5 = {
id5: 'jamsuham',
pw5: '1234',
name5: '잠수함',
age5: 30,
};
let {id5, ...rest5} = user5;
console.log(id5);
console.log(rest5.pw5);
console.log(rest5.name5);
console.log(rest5.age5);
프로미스
- 콜백지옥
- 비동기 처리를 위해 콜백함수 사용
- 많이 사용하면 답이 없다.... ㅠㅠ
프로미스
콜백함수
: 오류 처리 힘듬 + 비동기 1번에 처리 한계
- 콜백함수 단점을 보완 : 프로미스
- 자바스크립트에서 비동기 작업을 처리하는 메커니즘
- 다른 코드의 실행을 블록 시키지 않고 준비되면 비동기 작업의 결과를 처리
지금은 아니지만 이후에 처리한다는 것
var pro1 = new Promise(function(resolve, reject){
resolve('success');
});
pro1.then(function(result){
console.log('result', result);
});
var pro2 = new Promise(function(resolve, reject){
setTimeout(function(){
resolve('success');
}, 2000);
});
pro2.then(function(result){
console.log('result', result);
});
function pro3() {
return new Promise(function(resolve, reject) {
setTimeout(function(){
resolve('success');
}, 2000);
});
}
pro3().then(function(result) {
console.log('result', result);
})
function pro4() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('pro4 success');
}, 3000);
});
}
function pro5() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('pro5 success');
}, 3000);
});
}
pro4().then(function(result) {
console.log('result1', result);
pro5().then(function(result) {
console.log('result2', result);
});
});
function pro6() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('pro6 success');
}, 3000);
});
}
function pro7() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('pro7 success');
}, 3000);
});
}
pro6().then(function(result) {
console.log('result1', result);
return pro7();
}).then(function(result) {
console.log('result2', result);
});
function pro8() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject('pro8 fail');
}, 3000);
});
}
function pro9() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject('pro9 fail');
}, 3000);
});
}
pro8().then(function(result) {
console.log('result1', result);
return pro9();
}).catch(function(err) {
console.log('err', err);
return Promise.reject(err);
}).then(function(result) {
console.log('result2', result);
});
const pro11 = pid => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (pid == 'jamsuham') {
resolve('pro11 success');
} else {
reject('pro11 err');
}
}, 4000);
});
}
const pro12 = ppw => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (ppw == '1111') {
resolve('pro12 success');
} else {
reject('pro12 err');
}
}, 4000);
});
}
const id12 = 'jamsuham';
const pw12 = '1111';
pro11(id12).
then(result => {
console.log('result11', result);
return pro12(pw12);
}).then(result => {
console.log('result12', result);
}).catch(err => {
console.log('err', err);
return Promise.reject(err);
})