
JavaScript = 프로그래밍 언어
ECMAScript = 자바스크립트의 표준 (이하 ES)
둘이 같은거는 아닙니다.
ECMAScript= 설명서
자바스크립트= 결과물
🔥 이런 느낌?
자바스크립트는 ES6 이전, 이후로 나뉠 수 있다.
그만큼 ES6부터 큰 변화가 일어났다.
이름도 ES6부터는 (2015년부터) ECMAScript 2015로 년도를 붙이기 시작
Modern JavaScript = 현 시점에서 사용하기 적합한 범위 내에서 최신 버전의 표준을 준수하는 자바스크립트
true가 될 수 없다.const bee = Symbol('Hello world');
bee === 'Hello'; // false
bee === 'world'; // false
bee === 'Hello world; // false
falseconst bee1 = Symbol('Hello world');
const bee2 = Symbol('Hello world');
console.log(bee1 === bee2); // false
typeof null = objecttypeof function = function (object를 내뱉는거 아니라는거 명심)False(Falsy) =
false,null,undefined,NaN,0,''
True(Truthy) = 나머지 값들, 빈 배열값[], 빈 객체값{}
AND 연산자Falsy = 왼쪽값 출력Truthy = 오른쪽값 출력OR 연산자Falsy = 오른쪽값 출력Truthy = 왼쪽값 출력console.log(null && undefined); // null
console.log(0 || true); // true
console.log('0' && NaN); // NaN
console.log({} || 123); // {}
AND > OR 우선순위가 AND가 더 높다?? : null 혹은 undefined 값을 가려내는 연산null이거나 undefined라면 연산자 오른쪽값 출력null이거나 undefined가 아니라면 연산자 왼쪽값 출력function 함수이름(파라미터) {
동작
return 리턴값;
}
const printBee = function() {
console.log('Bee');
};
함수내부 에서만 사용가능하고, 외부에서 호출하면 오류가 발생한다.// 원래 사용하던 함수
const sayHi = function () {
console.log('Hi');
};
console.log(sayHi.name); // sayHi
// 기명 함수 표현식
const sayHi = function printHiInConsole() {
console.log('Hi');
};
console.log(sayHi.name); // printHiInConsole
(function () {
console.log('Hi!');
})();
실행결과 : Hi!
초기화 기능에 많이 사용조건식 ? true 값 : false 값const CUT_OFF = 80;
function passChecker(score) {
return score > CUT_OFF ? '합격!' : '불합격!';
}
console.log(passChecker(90)); // 합격!
... 을 사용Rest Parameter와 비슷해 보이지만, Rest Parameter는 여러개의 값을 하나로 묶어 주는 기능을 한다면Spread 문법은 묶여 있는 값을 각각의 개별 값으로 펼치는 방식중괄호 안에 있어야 한다.const webPub = ['HTML', 'CSS'];
const interactWeb = [...webPub, 'JavaScript'];
console.log(webPub); // HTML, CSS
console.log(interactWeb); // HTML, CSS, JavaScript
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [...arr1, ...arr2];
console.log(arr3); // 1, 2, 3, 4, 5, 6
const propertyName = 'birth';
const getJob = () => 'job';
const codeit = {
['topic' + 'Name']: 'Modern JavaScript',
[propertyName]: 2017,
[getJob()]: '프로그래밍 강사',
};
console.log(codeit);
undefined / null이 아니라면 그 다음 프로퍼티 값을 리턴하고undefined를 반환function printCatName(user) {
console.log(user.cat?.name ?? '함께 지내는 고양이가 없습니다.');
}
const user2 = {
name: 'Young',
}
printCatName(user2);
const rank = ['효준', '유나', '민환', '재하'];
// const macbook = rank[0];
// const ipad = rank[1];
// const airpods = rank[2];
// const coupon = rank[3];
const [macbook, ipad, airpods, coupon] = rank; // 구조분해
console.log(macbook);
console.log(ipad);
console.log(airpods);
console.log(coupon);
rank오류 발생// 교환 하는 방법
let macbook = '효준';
let ipad = '유나';
console.log('MacBook 당첨자:', macbook);
console.log('iPad 당첨자:', ipad);
[macbook, ipad] = [ipad, macbook];
console.log('MacBook 당첨자:', macbook);
console.log('iPad 당첨자:', ipad);
const numbers = ['1', '2', '3', '4'];
numbers.forEach(function (number) {
console.log(`${number}번`);
})
forEach(배열의 요소, 인덱스, 배열)새로운 배열을 리턴한다.const firstNames = ['영훈', '윤수', '동욱', '태호'];
const lastNames = ['강', '이', '손', '성'];
firstNames.forEach((firstName, i) => {
return lastNames[i] + firstName;
})
🔥 단순한 반복 작업만 필요하다 ->
forEach
🔥 반복 작업을 통해 새로운 배열이 필요하다 ->map
배열모든 값을 가져온다.const devices = [
{ name: 'GalaxyNote', brand: 'Samsung'},
{ name: 'MacBookPro', brand: 'Apple'},
{ name: 'iPad', brand: 'Apple'},
{ name: 'GalaxyWatch', brand: 'Samsung'},
{ name: 'GalaxyBuds', brand: 'Samsung'},
{ name: 'AirPods', brand: 'Apple'},
]
const apples = devices.filter((device) => device.brand === 'Apple');
console.log(apples);
값1개의 값만 가져온다. (인덱스가 가장 가까운거)const devices = [
{ name: 'GalaxyNote', brand: 'Samsung'},
{ name: 'MacBookPro', brand: 'Apple'},
{ name: 'iPad', brand: 'Apple'},
{ name: 'GalaxyWatch', brand: 'Samsung'},
{ name: 'GalaxyBuds', brand: 'Samsung'},
{ name: 'AirPods', brand: 'Apple'},
]
const apples = devices.find((device) => device.brand === 'Apple');
console.log(apples);
const numbers = [1, 3, 5, 7, 9];
// some 메소드
const someReturn = numbers.some((el) => el > 5);
// every 메소드
const everyRetrun = numbers.every((el) => el > 5);
console.log(someReturn); // true
console.log(everyRetrun); // false
const numbers = [1, 2, 3, 4];
const sumAll = numbers.reduce((acc, el, i) => {
console.log(`${i}번 index의 요소로 콜백함수가 동작중`);
console.log('acc:', acc);
console.log('el:', el);
console.log('-------------');
return acc + el;
}, 0);
console.log(`합계:`, sumAll);
key, value로 이루어진다.
map.set(key, value): key를 이용해 value를 추가하는 메소드.
map.get(key): key에 해당하는 값을 얻는 메소드. key가 존재하지 않으면 undefined를 반환.
map.has(key): key가 존재하면 true, 존재하지 않으면 false를 반환하는 메소드.
map.delete(key): key에 해당하는 값을 삭제하는 메소드.
map.clear(): Map 안의 모든 요소를 제거하는 메소드.
map.size: 요소의 개수를 반환하는 프로퍼티. (메소드가 아닌 점 주의! 배열의 length 프로퍼티와 같은 역할)
중복을 허용하지 않음
set.add(value): 값을 추가하는 메소드. (메소드를 호출한 자리에는 추가된 값을 가진 Set 자신을 반환.)
set.has(value): Set 안에 값이 존재하면 true, 아니면 false를 반환하는 메소드.
set.delete(value): 값을 제거하는 메소드. (메소드를 호출한 자리에는 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환.)
set.clear(): Set 안의 모든 요소를 제거하는 메소드.
set.size: 요소의 개수를 반환하는 프로퍼티. (메소드가 아닌 점 주의! 배열의 length 프로퍼티와 같은 역할)