ECMA 표준화 ES6 https://www.ecma-international.org/
V8 자바스크립트 엔진(구글) https://v8.dev/
브라우저 이외에서도 자바스크립트가 동작하도록 하는 환경
let var1 = 1;
키워드 - 식별자 - 리터럴 - 구분자
ECMA에서는 끝에 세미콜론을 붙이는 것을 권장
영문자(대소문자), 숫자, (언더스코어), $(달러) 사용 가능
숫자로는 시작할 수 없다. ❌ let 1var = 1; //error
식별자는 값이 아닌 메모리 주소를 기억 ⭐
camelCase ⭐원칙
ParcelCase : (특수 케이스)
데이터를 저장하고 참조(사용)하는 데이터 이름
키워드 : var / let / const
원시 타입 / 객체타입
undefined / null
조건을 만족할 때 실행순서를 정하는 구문
while(참 or 거짓) {
수행코드;
}
for : 일반적으로 횟수가 정해져있는 반복문
for(시작조건; 종료조건; 수행코드)
for ~ of
// for ~ of
const nums = [1,2,3,4,5];
for(let num of nums) {
console.log(num);
}
일반적인 리터럴 데이터를 효율적을 관리하기 위한 객체
생성 : [요소1, 요소2, ...]
배열 -> 책장과 비유를 많이 함
let jsArray = ['HTML', 'CSS', 'JS']
// 조회 : 배열변수명[인덱스번호]
console.log(jsArray[1]) --> 'CSS'
// 배열 길이 : 배열변수명.length
console.log(jsArray.length) --> 3
let nums = [1,2,3,4,5]
console.log(nums) --> [1,2,3,4,5]
nums.push(6)
console.log(nums) --> [1,2,3,4,5,6]
let nums = [1,2,3,4,5]
nums.unshift(0)
console.log(nums) --> [0,1,2,3,4,5]
let nums = [1,2,3,4,5]
nums.pop()
console.log(nums) --> [1,2,3,4]
let nums = [1,2,3,4,5]
nums.shift()
console.log(nums) --> [2,3,4,5]
splice(idx) : 지정한 인덱스 포함 이후의 모든 요소 삭제
let nums = [1,2,3,4,5]
nums.splice(2)
console.log(nums) --> [1,2]
splice(idx, no) : 지정한 인덱스 포함 해당 no 갯수만큼의 요소 삭제
let nums = [1,2,3,4,5]
nums.splice(2, 2)
console.log(nums) --> [1,2,5]
splice(idx, no, el) : 지정한 인덱스 포함 num갯수만큼 요소 삭제 후, 해당 인덱스에 element 추가
let nums = [1,2,3,4,5]
nums.splice(2, 0, 6)
console.log(nums) --> [1,2,0,3,4,5]
let nums = [1,2,3,4,5]
nums.slice(2)
console.log(nums.slice(2)) --> [3,4,5]
console.log(nums) --> [1,2,3,4,5]
let nums = [1,2,3,4,5]
console.log(nums.indexOf(3)) --> 2
console.log(nums.indexOf(7)) --> -1, 해당 요소는 배열에 존재하지 않음
let nums = [1,2,3,4,5]
console.log(nums.join()) --> '1,2,3,4,5'
console.log(nums.join(' ')) --> '12345'
console.log(nums.join('-')) --> '1-2-3-4-5
console.log(typeof nums.join()) --> string
// 예제1
let numbers = [1,2,5,6,8];
let even = numbers.find(item => item % 2 === 0)
console.log(even) --> 2
//예제2
let cats = [
{name: '마일로', age: 10},
{name: '앙꼬', age: 11},
{name: '포우', age: 12},
{name: '포니', age: 6}
]
//find를 통해서 age가 10살 이하인 고양이만 검색
let under10 = cats.find(cat => cat.age <= 10);
console.log(under10); --> {name: '마일로', age: 10}
let under1010 = cats.filter(cat => cat.age <= 10);
console.log(under1010) --> [{name: '마일로', age: 10}, {name: '포니', age: 6}]
기존 for문
const nums = [1,2,3];
const pows= [];
for(let i = 0; i < nums.length; i++) {
pows.push(nums[i] ** 2);
}
console.log(pows); --> [1,4,9]
.forEach()
const nums = [1,2,3];
const pows= [];
nums.forEach(num => pows.push(num ** 2));
console.log(pows); --> [1,4,9]
-> 배열의 아이템 갯수만큼 콜백함수 호출
forEach내부에서는 reture을 사용하지 않음X : 절대밖으로 빠져나가지 않음
//예제1
let nums = [1, 2, 5, 6, 8];
let sum = 0;
nums.map(num => sum += num);
console.log(sum); --> 22
예제2
let newArray = nums.map(num => num + 10);
console.log(newArray); --> [11, 12, 15, 16, 18]
let nums = [1, 2, 5, 6, 8];
let forEachArray = []
nums.forEach(num => {
forEachArray.push(num + 10)
})
// 1부터 4까지 누적 구하기
const sum = [1,2,3,4].reduce((accumulator, currentValue, index, array) =>
accumulator + currentVale, 0)
console.log(sum) --> 10
해당이미지출처:https://velog.io/@minj9_6/JavaScript-%EB%B0%B0%EC%97%B4-%EA%B3%A0%EC%B0%A8-%ED%95%A8%EC%88%98%EB%8A%94-%EC%95%8C%EC%95%84%EC%95%BC-%EB%B0%B0.%EC%97%B4.%EC%99%84.%EC%84%B1
이미지원본: 모던자바스크립트 딥다이브
특정기능을 수행하는 소스코드 덩어리
입력을 받아 출력을 내보내는 일련의 과정
function 함수명(매개변수) {
}
1. 함수의 선언식 (declarations)
function getNames() {
console.log()
}
getNames(); //호출
2. 함수 표현 (expressions)
const getAges = function() {
console.log()
}
getAges(); //호출