: 어떤 목적을 가지고 작성한 코드를 모아 둔 블록문
: 한번 작성해두면 정의한 함수 계속 호출
ex. 구구단을 출력하는 함수
1. 함수 선언문
function gugudan3() {
for (let i = 1; i <= 9; i++) {
console.log(`3 * ${i} = ${3 * i}`);
}
}
2-1. 네이밍
const funcGuGu4 = function gugudan4() {
for (let i = 1; i <= 9; i++) {
console.log(`4 * ${i} = ${4 * i}`);
}
}
2-2. 익명
const funcGuGu5 = function () {
for (let i = 1; i <= 9; i++) {
console.log(`5 * ${i} = ${5 * i}`);
}
}
const funcGuGu6 = () => {
for (let i = 1; i <= 9; i++) {
console.log(`6 * ${i} = ${6 * i}`);
}
}
: 코드를 선언과 할당으로 나누었을 때, 선언부를 스코프 최상위로 끌어올리는 것
적용 대상
+) let이나 const는 호이스팅X
: 함수를 정의하면서 동시에 실행까지 하는 함수 (한 번 실행하면 메모리에 데이터X), 해당 식별자를 한 번도 사용되지 않은 것처럼 인식
형식 (function() {}) ();
: 예시
(function init() {
console.log("initialized!");
})();
// init(); ReferenceError: init is not defined
결과
initialized!
대괄호 연산자
객체['속성']
마침표 연산자
객체.속성
객체['속성'] = 변경(추가)하려는 값
객체.속성 = 변경(추가)하려는 값
delete 객체['속성']
delete 객체.속성
깊은 복사 (deep copy) : 기본 자료형의 데이터 관리 방법 / 원래의 값을 변경해도 복사본의 값이 변경되지 않음
얕은 복사 (swallow copy) : 참조 자료형의 데이터 관리 방법 / 원래의 값 변경하면 같은 주소를 바라보고 있는 복사본의 값도 변경
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = arr1;
arr3[0] = 7; // -> 원본에 변화O
console.log(arr1, arr3) // [7,2,3] [7,2,3]
let arr4 = [...arr2]; // 원본 배열 복사해서 얕은 복사 되지 않도록
arr4[0] = 9;// -> 원본에 변화 X
console.log(arr2, arr4); // [ 4,5,6 ] [ 9,5,6 ]
구분 | 위치 | 설명 |
---|---|---|
push | 배열 뒤 | 추가 |
pop | 배열 뒤 | 삭제 |
unshift | 배열 앞 | 추가 |
shift | 배열 앞 | 삭제 |
+++ pop과 shift같은 경우 변수에 담으면 어떤 요소가 제거 되는지 알 수 있음
let arr1 = [1, 2, 3];
let test = arr1.shift();
console.log(arr1, test);
결과
[ 2, 3 ] 1
형식 : 배열.splice(인덱스, 삭제개수, (추가할 값))
let arr = [4,5,6,1];
console.log(arr);
arr.splice(2, 1); // 인덱스 2부터 하나 삭제
console.log(arr);
arr.splice(1, 0, 6); // 6을 추가
console.log(arr);
결과
[ 4, 5, 6, 1 ]
[ 4, 5, 1 ]
[ 4, 6, 5, 1 ]
: 오름차순 정렬 (원본 변경)
let arr10 = [2, 0, 5, 8];
let sortedArr = [...arr10];
sortedArr.sort();
console.log(arr10, sortedArr);
결과
[ 2, 0, 5, 8 ] [ 0, 2, 5, 8 ]
let str2 = "acbde@naver.com";
// 1. includes
console.log(str2.includes("@")); // true
// 2. indexOf
console.log(str2.indexOf("@")); // 5
// 3. substring
console.log(str2.substring(0, 5)) // 인덱스로 0부터 5-1까지 => acbde
let str5 = "abcc@naver.com";
let strSplit = str5.split("@");
console.log(strSplit);
let phoneNum = "010-4321-3453";
let splitted = phoneNum.split("-");
console.log(splitted);
결과
[ 'abcc', 'naver.com' ]
[ '010', '4321', '3453' ]
let testStr = "abcde";
testStr = testStr.toUpperCase();
console.log(testStr);
testStr = testStr.toLowerCase();
console.log(testStr);
for (let i = 0; i < testStr.length; i++) {
console.log(testStr.charAt(i));
}
결과
ABCD
abcd
a
b
c
d
let str6 = " abcgd23 ";
console.log(str6.trim());
결과
abcgd23