컴퓨터 과학에서배열은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진자료 구조를 나타낸다.
일반적으로 배열에는 같은 종류의 데이터들이 순차적으로 저장되어, 값의 번호가 곧 배열의 시작점으로부터 값이 저장되어 있는 상대적인 위치가 된다.
객체 선언
// 객체 리터럴로 객체 생성
let person = {
name: "John",
age: 30,
greet: function() {
console.log("Hello, " + this.name);
}
};
// 빈 객체 선언
let emptyObject = {};
let emptyObjects = new Object();
// 객체 프로퍼티 접근
console.log(person.name); // John
console.log(person.age); // 30
// 객체 메서드 호출
person.greet(); // Hello, John
객체 선언
객체 프로퍼티 접근
let person = {
name: "Alice",
age: 25
};
// 점 표기법
console.log(person.name); // Alice
console.log(person.age); // 25
// 대괄호 표기법
console.log(person["name"]); // Alice
console.log(person["age"]); // 25
객체 프로퍼티 접근
객체 메서드 접근
let person = {
name: "Alice",
age: 25,
greet: function() {
console.log("Hello, " + this.name);
}
};
person.greet(); // Hello, Alice
객체 메서드 접근
배열 선언
// 배열 리터럴로 배열 생성
let numbers = [1, 2, 3, 4, 5];
// 빈 배열 선언
let emptyArray = [];
let emptyArrays = new Array();
// 배열에 접근
console.log(numbers[0]); // 1
console.log(numbers[2]); // 3
배열 선언
배열 메서드 접근
let numbers = [1, 2, 3, 4, 5];
// push: 배열의 끝에 요소 추가
numbers.push(6);
console.log(numbers); // [1, 2, 3, 4, 5, 6]
// pop: 배열의 마지막 요소 제거
numbers.pop();
console.log(numbers); // [1, 2, 3, 4, 5]
// shift: 배열의 첫 번째 요소 제거
numbers.shift();
console.log(numbers); // [2, 3, 4, 5]
// unshift: 배열의 첫 번째 위치에 요소 추가
numbers.unshift(1);
console.log(numbers); // [1, 2, 3, 4, 5]
// forEach: 배열의 각 요소에 대해 함수를 실행
numbers.forEach(function(number) {
console.log(number); // 1, 2, 3, 4, 5
});
배열 메서드 접근
배열 안에 객체 저장
let students = [
{ name: "John", age: 22 },
{ name: "Jane", age: 24 },
{ name: "Mike", age: 23 }
];
// 배열 안의 객체에 접근
console.log(students[0].name); // John
console.log(students[1].age); // 24
배열 안에 객체 저장
객체 안에 배열 저장
let person = {
name: "John",
hobbies: ["Reading", "Traveling", "Swimming"]
};
// 객체 안의 배열에 접근
console.log(person.hobbies[0]); // Reading
console.log(person.hobbies[1]); // Traveling
function add(a, b) {
return a + b;
}
console.log(add(10, 20));
const add2 = function (a, b) {
return a + b;
}
console.log(add2(10, 20));
const add3 = (a, b) => {
return a + b;
}
console.log(add3(10, 20));
const add4 = (a, b) => a + b;
console.log(add4(10, 20));
function sum(...numbers) {
let total = 0;
for(let i of numbers) {
total = total + i;
}
return total;
}
console.log(sum(1, 2, 3, 4)); // 10
가변인자가 존재하는 함수 선언 후 실행
6. 스코프(Scope)
함수 스코프 : var로 선언한 변수는 함수 내에서만 유효합니다.
function functionScopeExample() {
if (true) {
var x = 10; // 'var'는 함수 스코프
}
console.log(x); // 10: x는 functionScopeExample 함수 내에서 유효하므로 출력됨
}
functionScopeExample();
함수 스코프 존재하는 함수 선언 후 실행
블록 스코프 : let, const로 선언한 변수는 블록 내에서만 유효합니다.
function blockScopeExample() {
if (true) {
let y = 20; // 'let'은 블록 스코프
const z = 30; // 'const'는 블록 스코프
}
console.log(y); // ReferenceError: y is not defined
console.log(z); // ReferenceError: z is not defined
}
blockScopeExample();
블록 외부에서 스코프에 접근했기에 에러가 나옴
글로벌 스코프 : 함수 외부에서 선언된 변수는 어디에서나 접근 가능합니다.
let globalVar = 'global';
function testScope() {
let localVar = 'local';
console.log(globalVar); // global
console.log(localVar); // local
}
testScope();
// console.log(localVar); // 오류 발생
let age = 20;
if (age >= 18) {
console.log('성인입니다.');
} else {
console.log('미성년자입니다.');
}
조건문 실행
반복문
같은 동작을 여러번 반복시키는 문법을 반복문이라고 지칭한다.
let i;
for (i = 0; i < 5; i=i+1) { // for(반복 카운트 변수 정의; 반복 조건 정의(True일 때 작동); 1회 반복 후 증감 정의)
console.log(i); // 0, 1, 2, 3, 4
}
for (let n of [1,2,3,4,5]) { // for(배열 크기만큼 반복)
console.log(n);
}
let count = 0;
while (count < 3) { // while(조건이 True일 때 반복)
console.log(count); // 0, 1, 2
count++;
}
let p = true;
let q = false;
console.log(p && q); // false (AND: 둘 다 true여야 true)
console.log(p || q); // true (OR: 하나라도 true면 true)
console.log(!p); // false (NOT: true는 false로, false는 true로)
논리 연산자
할당 연산자
값을 변수에 저장하는 기능을 제공하는 기호 혹은 키워드를 의미한다.
let z = 10;
// 단순 할당
z = 15;
console.log(z); // 15
// 복합 할당
z += 5; // z = z + 5
console.log(z); // 20
z -= 3; // z = z - 3
console.log(z); // 17
z *= 2; // z = z * 2
console.log(z); // 34
z /= 2; // z = z / 2
console.log(z); // 17
z %= 5; // z = z % 5
console.log(z); // 2