유효 범위 - block scope( block : {} )
예외) var의 유효 범위 - function scope → let, const 권장(직관적이지 않음)
Hoisting - 아래 있는 선언을 끌어올리는 것 → var에서 나타나는 현상 (let은 Hoisting없음)
age = 6;
var age;
자료형(Data Types) - 동적 타이핑(Dynamic Typing)
let i = "Mark" // String
i = 37 // Int
i = true // Boolean
기본 타입(Primitive values)
Boolean
Null
Undefined
Number
String
Symbol(ES6에 추가) - 고유한 것
const a = Symbol()
const b = Symbol('Mark')
const c = Symbol('Mark')
b !== c
Object
== → 값만 비교
=== → 값이랑 자료형 비교
NaN(Number)
const function1 = () => {
console.log('function1');
};
const function2 = name => {
console.log('function2', name);
};
const function3 = (name, age) => {
console.log('function3', name, age);
}
const function4 = name => {
return `function4 ${name}`
}
const function5 = name => `function5 ${name}`
⇒ 는 this를 가지지 않는다
Template Leteral → function ${name}
function plus(base) {
return function(num) {
return base + num;
};
}
const plus5 = plus(5);
console.log(plus5(10));
const plus7 = plus(7);
console.log(plus7(8));
함수를 인자로 하여 함수를 호출
function hello(c) {
console.log('hello');
c();
}
hello(function(){
console.log('callback');
});
생성자 함수로 객체 만들기
function 틀(){} ⇒ new 틀()
선언적 방식
Class A {}
class 표현식을 변수에 할당
const B = class {};
class B {
constructor(){
}
}
new Promise(/* executor */);
new Promise((resolve, reject) => {})
new Promise((resolve, reject) -> {}) // pending(대기)
new Promise((resolve, reject) => {
// pending
...
resolve(); //fulfilled(이행)
})
new Promise((resolve, reject) => {
// pending
...
reject(); //rejected
})
function p() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
reject(new Error('bad'));
}, 1000);
});
}
p()
.then(() => {
//callback
})
.catch((error) => {
console.log('rejected', reason)
})
.finally(() => {
});
forEach
map
indexOf - 특정 값이 어디 있는지 알아내고 싶을 때
findIndex - 특정 조건에 맞는 원소의 위치 알아낼 때
find - 객체 찾아낼때
filter - 특정 조건을 만족하는 원소들로 새로 배열을 만들 때
splice(기존 배열에 영향) & slice(기존 배열에 영향 X) - 특정 원소 지우기
shift - 맨 왼쪽 | pop - 맨 오른쪽
concat - 배열끼리 합칠 때
join - 배열을 문자열로 합칠 때(separator 사용)
reduce - accumulator, current