function run(){
console.log('3초 후 실행');
}
console.log('시작');
setTimeout(run, 3000);
console.log('끝');
function oneMore(){
console.log('one more');
}
function run(){
console.log('run run');
setTimeout(() => {
console.log('wow');
}, 0)
new Promise((resolve) => {
resolve('hi');
})
.then(console.log);
oneMore();
}
setTimeout(run, 5000);
/*
실행결과 :
run run
one more
hi
wow
*/
var는 함수 스코프(function(){}이 스코프의 기준점)
if(true){
var x = 3;
}
console.log(x); // 3
function a(){
var y = 3;
}
console.log(y); // 에러
if(true){
const z = 3;
}
console.log(z) // 에러
const a = 3;
a = '5'; // 에러
const b = { name : 'yeobi01' };
b.name = 'tkdduq'; // 가능
var won = 1000;
var result = '이 과자는 '+ won +'원입니다.';
const result2 = `이 과자는 ${won}원입니다`;
function a(){}
a();
a``; // 태그 템플릿 리터럴
var sayNode = function(){
console.log('Node');
};
var es = 'ES';
var oldObject = {
sayJS: function(){
console.log('JS');
},
sayNode: sayNode,
};
oldObject[es + 6] = 'Fantastic';
console.log(oldObject.ES6); // Fantastic
var sayNode = function(){
console.log('Node');
};
var newObject = {
sayJS(){
console.log('JS');
},
sayNode,
[es + 6]: 'Fantastic';
};
console.log(newObject.ES6); // Fantastic
화살표와 중괄호 다음으로 return이 바로온다면 생략가능
function add1(x, y){
return x + y;
}
const add2 = (x, y) => {
return x + y;
};
const add3 = (x, y) => x + y;
const add4 = (x, y) => (x + y);
function not1(x){
return !x;
}
const not2 = x => !x;
const obj = (x, y) => ({x, y});
// 객체를 리턴하는 경우에는 ()가 필수!!
that이라는 중간 변수를 이용해서 logFriends의 this를 전달
var relationship1{
name: 'zero',
friends: ['nero', 'hero', 'xero'],
logFriends: function(){
var that = this;
this.friends.forEach(function (friend){
console.log(that.name, friend);
});
},
};
var relationship2{
name: 'zero',
friends: ['nero', 'hero', 'xero'],
logFriends() {
this.friends.forEach((friend) => {
console.log(this.name, friend);
});
},
}
button.addEventListener('click', function(){
console.log(this.textContent);
});
button.addEventListener('click', (event) => {
console.log(event.target.textContent);
});
const example = {a: 123, b: {c: 135, d: 146}}
const a = example.a;
const d = example.b.d;
const{a, b: { d }} = example;
console.log(a); // 123
console.log(b); // 146
// 객체는 key가 일치해야함
arr = [1, 2, 3, 4, 5];
const x = arr[0];
const y = arr[1];
const z = arr[4];
const[x, y, , , z] = arr;
// 배열은 자리를 똑같이 하기
const candyMachine = {
status: {
name: 'node',
count: 5,
},
getCandy(){
this.status.count--;
return this.status.count;
},
};
const { getCandy, status: { count }} = candyMachine;
// this가 있으면 구조분해 할당 안하는게 좋음
class Human{
constructor( type = 'human' ){
this.type = type;
}
static isHuman(human){
return human instanceof Human;
}
breathe(){
alert('h-a-a-a-m');
}
}
class Zero extends Human{
constructor(type, firstName, LastName){
super(type);
this.firstName = firstName;
this.lastName = lastName;
}
sayName(){
super.breathe();
alert(`${this.firstName} ${this.lastName}`);
}
}
const newZero = new Zero('human','Kim','SanyYeob');
const condition = true; // true면 resolve, false면 reject
const promise = new Promise((resolve, reject) => {
if(condition){
resolve('성공');
} else {
reject('실패');
}
})
// 다른 코드가 들어갈 수 있음
promise
.then((message) => {
console.log(message); // 성공(resolve)한 경우 실행
})
.catch((error) => {
console.error(error); // 실패(reject)한 경우 실행
})
async/await 강의영상 이해될 때까지 돌려보기
<script src="https://unpkg.com/axios/dist/axios.min.js"</script>
<script>
// 코드작성
</script>
GET 요청 보내기
.axios.get('https://www.zerocho.com/api/get')
.then((result) => {
console.log(result);
console.log(result.data);
})
.catch((error) => {
console.error(error);
});
(async () => {
try{
const result = await axios.get('https://www.zerocho.com/api/get');
console.log(result);
console.log(result.data);
} catch(error) {
}
})();
POST 요청을 하는 코드(데이터를 담아 서버로 보내는 경우)
(async () => {
try{
const result = await axios.post('https://www.zerocho.com/api/post/json', {
name: 'zerocho',
birth: 1994,
});
console.log(result);
console.log(result.data);
} catch(error){
console.error(error);
}
})();
HTML form 태그에 담긴 데이터를 AJAX 요청으로 보내고 싶은 경우
FormData 메서드
const formData = new FormData();
formData.append('name','zerocho');
formData.append('item','orange');
formData.append('item','melon');
formData.has('item'); // true
formData.has('money'); // false
formData.get('item'); // orange
formData.getAll('item'); // ['orange', 'melon']
formData.append('test',['hi', 'zero']);
formData.get('test'); // hi, zero
formData.delete('test');
formData.get('test'); // null
formData.set('item', 'apple');
formData.getAll('item'); // ['apple']..?
FormData POST 요청으로 보내기
(async () => {
try{
const formData = new FormData();
formData.append('name', 'zerocho');
formData.append('birth', 1994);
const result = await axios.post('https://www.zerocho.com/api/post/formdata', formData);
console.log(result);
console.log(result.data);
} catch (error){
console.error(error);
}
})();
가끔 주소창에 한글 입력하면 서버가 처리하지 못하는 경우 발생
(async () => {
try{
const result = await axios.get(`https://www.zerocho.com/api/search/${encodeURIComponent('노드')}`);
console.log(result);
console.log(result.data);
} catch (error){
console.error(error);
}
})();
**노드를 encodeURIComponent하면 %EB%85%B8%EB%93%9C가 됨
decodeURIComponent('%EB%85%B8%EB%93%9C'); // 노드
HTML 태그에 테이터를 저장하는 방법
<ul>
<li data-id="1" data-user-job="programmer">Zero</li>
<li data-id="2" data-user-job="designer">Nero</li>
<li data-id="3" data-user-job="programmer">Hero</li>
<li data-id="4" data-user-job="ceo">Kero</li>
</ul>