내장된 표현식을 허용하는 문자열 리터럴이다. 쉽게 설명해서, 문자열 내에 이전에 선언된 변수를 그자체로 사용할 수 있게 해주는 리터럴 체계라고 생각하면 편하다.
``안에 문자열을 작성하고, 변수는 ${}안에 작성하면 된다.
const x =10; const y = 20; const result = x * y; console.log(`x값은 ${x}이고, y값은 ${y}이고 두개의 곱은 ${result}입니다.`);
- 기존에 이스케이프 코드인
\n
을 사용하지 않고도 행간 줄바꿈 처리가 가능하다는 특징이 있다.- 다만, 가독성이 떨어진다는 단점이 있다.
if (true) { if (true) { if (true) { console.log(`h e l l o `) } } }
const s ='hello world' console.log(s[0]) s[0] = 'i' // error
배열의 프로퍼티가 숫자인 경우에는 오직 대괄호만으로 호출 할 수 있지만, 그 외에는 대괄호나 .을 찍어서 호출 할 수 있다.
arr[1] // O arr.1 // X arr.length // O arr['length'] // O
배열은 순서가 있다. 배열의 순서를 index라고 하며, 이 순서로 호출하는 것을 indexing이라 한다. 그리고 배열안에 있는 값을 원소(element)라고 한다.
배열에 다른 원시타입과 객체타입을 포함할 수 있다. 즉, 배열안에 또다른 배열이 들어가 2차원 그 이상으로도 표현이 가능하다는 것이다.
const arr = [ [1,2,3], [4,5,6], [7,8,9] ] // arr[2][1] // 8
pop() : 배열의 맨 마지막 요소를 추출하고, 추출한 값을 반환(return) 한다.
const arr = [1, 2, 3, 4, 5] let lastValue = arr.pop() arr // (4) [1, 2, 3, 4] lastValue // 5
shift() : 배열의 맨 앞 요소를 추출하고, 추출한 값을 반환(return) 한다.
const arr = ["사과", "바나나", "수박"]; let firstValue = arr.shift(); arr // (2) ['바나나', '수박'] firstValue // '사과'
push() : 배열의 맨 마지막에 요소를 추가한다.
const arr = [1, 2, 3, 4, 5] arr.push(6) arr // (6) [1, 2, 3, 4, 5, 6]
unshift() : 배열의 맨 앞에 요소를 추가한다.
const arr = ["사과", "바나나", "수박"]; arr.unshift("딸기","참외") arr // (5) ['딸기', '참외', '사과', '바나나', '수박']
const arr = [10, 20, 30, 40, 50] const x = [1, 2, 3] arr.splice(2, 2, ...x); // (2) [30, 40] // 잘려나간 것 arr // (6) [10, 20, 1, 2, 3, 50] // 배열이 바뀜 arr.splice(2, 2); // 2번째 인덱스에서 값 2개를 삭제. 삽입되는 값은 없음. // [1, 2] arr // [10, 20, 3, 50]
const arr = [10, 20, 3, 50] arr.splice(1); // 0번째까지 남기고 뒤에는 다 날림 // [20, 3, 50] arr // [10]
const arr = ["apple", "banana", "cherry", "durian", "elderberry"]; console.log(arr.slice(1, 4)); // (3) ['banana', 'cherry', 'durian'] console.log(arr) // (5) ['apple', 'banana', 'cherry', 'durian', 'elderberry'] console.log(arr.slice(0)) // 전부 출력 // (5) ['apple', 'banana', 'cherry', 'durian', 'elderberry']
arr.forEach((item, index) => ) : 콜백함수에 들어가는 파라미터가 item과 index이다.
// 배열안에 1~100까지 forEach로 넣는 방법 const arr1 = Array(100).fill(0) const arr2 = [] arr1.forEach((item,index) => arr2.push(index + 1))
arr.map((v,i) => ) : 콜백함수에 들어가는 파라미터가 value와 index이다.
// map으로 1~100까지인 배열 만들기 const arr = Array(100).fill(0) arr.map((v,i) => i +1)
// 짝수 찾는 방법 const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] arr.filter(function(el){ return el % 2 === 0 }) // (5) [2, 4, 6, 8, 10] arr // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const arr = [1, 2, 3, 4, 5] arr.reduce((a,c) => a + c, 0) // 15 // 0은 반드시 넣어라
const arr = ['hello' , 'world', 10 , 'seunggyu'] arr.includes('hello') // true arr.includes('h3l') // false arr.includes('10') // false
const arr = ['hello' , 'world', 'seunggyu'] arr.join("!") // 'hello!world!seunggyu'
// 오름차순 const nums = [3, 1, 11, 8, 10]; console.log(nums.sort((a, b) => a - b)); nums // (5) [1, 3, 8, 10, 11] // 내림차순 const nums = [3, 1, 11, 8, 6]; console.log(nums.sort((a, b) => b - a)); nums // (5) [11, 8, 6, 3, 1]
key : value
의 형태로 요소들을 정렬하는 참조 타입이다.key : value
를 의미한다.// 객체 사용 예시 const test = { group : ['ein', 'zwei', 'drei', 'vier' ,'funf'], duty : "Go Home and GEt Rest", trouble : function (){ return "After School Class" } } // value가 함수인 경우는 key도 함수의 형태로 작성해야 호출이 가능하다. test.trouble() // After School Class // 1. 동적 추가 test.solution = "pass_exam" test // {group: Array(5), duty: 'Go Home and GEt Rest', solution: 'pass_exam', trouble: ƒ} // 2. 동적 갱신 test.duty = "work_hard" test.duty // "work_hard" // 3. 동적 삭제 delete test.trouble; test // {group: Array(5), duty: 'work_hard', solution: 'pass_exam'}
console.log(test.hasOwnProperty('lunch')); // false console.log(test.hasOwnProperty('trouble')); // true
Object
를 붙여 사용한다는 것이 중요하다.console.log(Object.keys(test)) // (3) ['group', 'duty', 'trouble'] console.log(Object.values(test)) // (3) [Array(5), 'Go Home and GEt Rest', ƒ]
function Hock(){ console.log('hello') console.log('hello') console.log('hello') console.log('hello') console.log('hello') console.log('hello') console.log('hello') } Hock() // Hock()하나만 있으면 위의 7줄의 코드가 실행된다. Hock() Hock()
function 밥짓기() { 코드... // 여기만 수정하면 유지보수가 끝난다. } 밥짓기() 밥짓기() 밥짓기() 밥짓기() * 100
밥짓기() // 해당 함수가 밥을 짓기 위한 함수라는 것을 파악할 수 있음 국끓이기() 테이블 셋팅하기() 반찬덜기() // 해당 코드는 식사준비를 위한 코드라는 것을 알 수 있음
function ein(a,b) { // a와 b가 본 함수의 파라미터 let z = a + b; return Z ** 2 } console.log(ein(1,2)) // 1, 2가 해당 함수의 아규먼트
const zwei = (a,b) => (a + b) ** 2 // 만악 함수 실행시 전달하는 인자가 한 개라면 소괄호를 생략가능 const drei = a => a ** 2
cosnt vier = function (a,b) { let z = a + b; return Z ** 2 } console.log(vier(1,2)) // 변수로 선언하여 다양하게 사용함
function funf(a,b,c) { let z = c(a,b) + c(a,b) // 여기서 ein(a,b)를 쓰면 함수의 순수성이 깨지는 것 return z * 2 } funf(7, 3, ein) // ein은 외부에서 선언된 함수명이다.
function hello1(){ //빈 코드 } function hello2(){ return } function hello3(){ return undefined } hello1() // undefined hello2() // undefined hello3() // undefined
function hello4(){ console.log('hello') console.log('hello') console.log('hello') return // undefined 반환 console.log('hello') console.log('hello') console.log('hello') } hello4() // hello * 3
function 함수1(a, b, c){ return a + b + c } 함수1(10, 20, 30, 40) // 60 // error가 발생하지 않는다. 함수1(10, 20) // 30 // error가 발생하지 않는다.
function 함수1(a=10, b=20, c=30){ return a + b + c } 함수1(1, 1) // 32 // a와 c에 들어갈 것이라 생각했지만, a와 b에 들어감 function 함수1(a=10, b=20, c=30){ return a + b + c } 함수1(a=1, c=1) // 32
(function() {
console.log('이 함수는 만들어지자마자 바로 실행됩니다!');
})();
function 함수(){
}
함수()