객체
는 자료형의 일종으로, 다양한 값을 모아 둔 또 다른 값을 의미한다.
- 배열 (array)
- 함수 (function)
- 배열이나 함수가 아닌 객체
const arrayOfArray = [[1, 2, 3], [4, 5]];
console.log(arrayOfArray[0]) // [1, 2, 3]
이차원 배열
이라고 한다.요소(element)
라고 한다.const everything = ['사과', 1, undefined, true, null, '배열']
console.log(everything.length) // 6
console.log(everything[everything.length - 1]) // '배열'
.length
를 붙이면 배열 요소의 개수를 구할 수 있다.const target = [1, 2, 3]
target[3] = 4
console.log(target) // [1, 2, 3, 4]
const target = [1, 2, 3]
target.unshift(0)
console.log(target) // [0, 1, 2, 3]
unshift
메소드를 통해 배열의 맨 앞에 요소를 추가할 수 있다.const target = [1, 2, 3]
target.push(4)
console.log(target) // [1, 2, 3, 4]
push
메소드를 통해 배열의 맨 뒤에 요소를 추가할 수 있다.const target = [1, 2, 3]
target.pop()
console.log(target) // [1, 2]
pop
메소드를 통해 배열의 맨 뒤 요소를 삭제할 수 있다.const target = [1, 2, 3]
target.shift()
console.log(target) // [2, 3]
shift
메소드를 통해 배열의 맨 앞 요소를 삭제 할 수 있다.const target = [1, 2, 3]
target.splice(1, 1)
console.log(target) // [1, 3]
splice
메소드를 통해 배열의 중간 요소를 삭제할 수 있다.splice
메소드는 인자를 두개 받는다.splice(1, 1)
= 1번째 인덱스부터 시작해서 1개 요소를 제거한다.const target = [1, 2, 3]
target.splice(1)
console.log(target) // [1]
splice
메소드에 인자를 한개만 받으면, 해당 인덱스부터 끝까지 삭제하겠다를 의미한다.splice(1)
= 1번째 인덱스부터 끝까지 제거한다.const target = [1, 2, 3, 4, 5]
target.splice(1, 3, '가', '나')
console.log(target) // [1, '가', '나', 5]
splice
메소드를 통해 제거 뿐만 아니라, 제거한 자리에 다른 요소를 추가할 수 있다.splice(1, 3, '가', '나')
= 1번째 인덱스 부터 3개의 요소를 삭제하고, 그 자리에 '가'
와 '나'
를 채워 넣는다.const target = [1, 2, 3]
const result = target.includes(3)
console.log(result) // true
includes
메소드를 통해 인자로 받은 값이 해당 배열에 포함되어 있는지 여부를 알 수 있다.const target = [1, 2, 3]
const result = target.indexOf(3)
console.log(target) // 2
const result2 = target.lastIndexOf(3)
console.log(target2) // 2
const result3 = target.indexOf(-5)
console.log(target3) // -1
indexOf
메소드를 통해 해당 인자가 위치한 인덱스를 알 수 있다.lastIndexOf
메소드는 맨 뒤 요소부터 찾는다.indexOf
메소드로 배열에 존재하지 않는 값의 인덱스를 찾으면 -1
값을 반환한다. ⭐️프로그래밍에서 함수
란, 특정한 작업을 수행하는 코드를 의미한다.
변수와 마찬가지로 함수를 만드는 행위도 선언한다(declare)라고 표현한다.
function a() {};
const c = () => {};
function
이라는 예약어를 통해 생성한다.화살표 함수(arrow function)
라고 한다.function a() {};
const b = function() {}'
function
이라는 키워드 뒤에 함수 이름을 넣는 방식을 함수 선언문(function declaration statement) 라고 한다.> function a() {}
a();
()
를 붙이면 함수가 호출되어 실행된다.function a() {
return 10
}
a() // 10
return
문을 통해 함수가 반환할 값을 직접 정할 수 있다.function a() {
console.log("hello");
return;
console.log("bye");
}
a(); // hello
console.log("bye")
보다 retrun
문이 더 먼저 있기 때문에 뒤에 있는 코드는 실행되지 않는다.return
문의 특성을 이용해서 함수의 실행을 조작할 수 있다.function a(parameter) {
console.log(parameter);
}
a('argument'); // argument
인수(argument)
를 받아 함수 내 매개변수(parameter)
로 사용되어 적용된다.undefined
가 된다.function
으로 선언한 함수에서만 사용할 수 있다.const a = 100
function example1(x, y) {
return (x - y) * a;
}
console.log(example1(5, 3)) // 200
function example2(x, y) {
const a = 100
return (x - y) * a;
}
console.log(example2(5, 3)) // 200
example1
과 example2
는 같은 동작을 한다.example2
와 같이 함수 자신의 매개변수나 내부 변수(또는 상수)만 사용하는 함수를 순수 함수라고 한다.example1
은 변수가 함수 외부에 있기 때문에 순수함수가 아니다.객체는 여러개의 변수를 하나의 변수로 묶을 때 사용한다.
const name = '조현영';
const year = 1994;
const month = 8;
const date = 12;
const gender = 'M';
name
, year
, month
, date
, gender
변수가 선언됐기 때문에 중복 선언할 수 없다는 불편함이 있다.const zerocho = {
name = '조현영';
year = 1994;
month = 8;
date = 12;
gender = 'M';
}
zerocho
라는 변수를 선언해서 그 안에 정보를 모아두었다.{}
안에 묶여 있다.name
, year
, month
, date
, gender
같은 정보들을 속성(property)이라고 한다.console.log(zerocho.name)
= 조현영
)console.log(zerocho['name'])
= 조현영
){}
를 사용해 객체를 표현하는 것을 객체 리터럴
이라고 표현한다.zerocho.gender = 'F';
console.log(zerocho.gender) =; // 'F'
변수.속성 = 값
을 통해 주어진 값으로 속성을 수정할 수 있다.delete zerocho.gender;
console.log(zerocho.gender); // undefined
delete 변수.속성
을 통해 특정 속성을 삭제할 수 있다.{} === {}; // false
false
를 반환한다.const a = { name: 'zerocho' }; // 객체를 변수 a에 저장
const array = [1, 2, 'a'];
console.log(a === array[2]); // true
const a = { name: 'zerocho' };
const b = a;
a.name = 'hero';
// 참고로 const는 상수지만 객체 값은 변경할 수 있기 때문에 변수의 일종이라는 점을 기억하자.
console.log(b.name); // 'hero'
a
에 객체를 할당한 뒤, 변수 b
에 대입한 상황a
의 속성값을 변경했는데, 변수 b
의 속성값에도 영향을 미친다.a
와 b
가 같은 객체를 참조한다고 표현한다.let a = 'zerocho';
let b = a;
a = 'hero';
console.log(b) // 'zerocho'
b
에 변수 a
의 값을 대입한 상황a
값을 수정해도 b
값은 수정되지 않는다.