객체
JavaScript에서 기본자료형을 제외한 모든 값은 객체입니다. 이름과 값을 한 쌍으로 묶은 데이터를 여러개 모은 것입니다.
// 객체의 생성
let user = {
name: "TOM",
age: 10
};
console.log(user);
여기서 name
과 age
는 각각 user 객체의 프로퍼티라고 부릅니다. 여기서 name
생성이 된 객체의 프로퍼티를 접근(값을 읽거나 값을 변경)할때는 . 연산자나 [] 연산자를 사용하며 프로퍼티의 이름을 이용하여 접근합니다. 대괄호 연산자에는 작은 따옴표(') 또는 큰 따옴표(") 를 사용하여 이름을 기술합니다.
// 객체 프로퍼티 읽기
console.log(user.name);
// 객체 프로퍼티 변경
user['age'] = 15;
console.log(user.age);
객체에 없는 프로퍼티에 값을 대입하면 새로운 프로퍼티가 추가됩니다.
// 객체 프로퍼티 추가
user.gender = 'M';
console.log(user.gender);
프로퍼티를 삭제할 때는 delete 연산자를 사용해야 합니다.
// 객체 프로퍼티 삭제
delete user.age;
console.log(user);
객체의 프로퍼티의 유무는 in
연산자를 사용하여 확인합니다.
// 객체 프로퍼티 유무확인
let user = {
name: "TOM",
age: 10
};
console.log("name" in user); // true
console.log("gender" in user); // false;
배열
배열은 []
로 묶어서 생성합니다. 생성하는 형식은 다르지만 사용방법은 C 와 동일합니다. 다만 JavaScript 의 배열은 실제 배열이 아니라고 합니다. C 의 경우는 메모리의 연속된 공간을 가르키는 것이지만, JavaScript 의 경우는 객체로 그 형태를 흉내난 것이기 떄문에 주의해야 합니다.
let a = ["A", "B", "C"]; // a = { 0 : "A", 1 : "B", 2 : "C" };
a[3] = "D";
console.log(a); // ["A", "B", "C", "D"]
delete a[1];
console.log(a); // ["A", undefined, "C", "D"]
// 배열의 길이가 아닌 가장 큰 인덱스의 값 이라고 기억하는 것이 좋다.
console.log(a.length); // 4
함수
function
키워드를 사용해서 정의합니다. 그 외의 사항은 일단은 C 와 동일합니다.
함수의 선언
// 함수의 정의
// 이름이 add 인 함수 입니다.
// 인자를 2개 받습니다.
function add(a, b) {
return a + b;
}
함수호출
// 함수 호출
let result = add(3, 5);
console.log(result);
// 함수를 변수에 할당하여 사용하기
let AddTwoNum = add;
console.log(AddTwoNum(4, 7));
변수의 유효범위
함수 외부에서 선언 및 정의한 변수는 함수내에서 사용할 수 있으며, 함수내에서 정의한 변수는 함수 밖에서 유효하지 않습니다. 특히 let
이라는 키워드로 선언되는 변수는 블록범위내에서 유효하며 블록이란 { } 를 의미합니다.
주의 함수내에서 변수를 선언하지 않은 상태에서 대입하면 전역변수가 생성됩니다. 일단 선언 없이 바로 대입하여 사용하면 전역변수라고 기억하면 됩니다.
함수의 인자
C 에서는 함수 인자의 값을 바꾸기 위해서는 포인터를 사용하였습니다. JavaScript 의 경우는 인자가 기본형일 경우와 객체인 경우 서로 다른 결과가 나옵니다.
// 인수가 기본자료형인 경우,
// CallByValue
function swap(a,b) {
let temp = b;
b = a;
a = temp;
}
let x = 3, y =2;
swap(x, y);
console.log("x =", x, ", y =", y); // x = 3 y = 2
// 인수가 객체인 경우,
// CallByReference
function swap(a, b) {
let temp = a.value;
a.value = b.value;
b.value = temp;
}
let x = {
value: 3
}
let y = {
value: 2
}
swap(x, y);
console.log("x = ", x.value, "y = ", y.value); // x = 2 y = 3
'프로그래밍 언어 > Javascript' 카테고리의 다른 글
JavaScript의 모듈로 연산(Modulo Operation) (0) | 2020.02.13 |
---|---|
JavaScript - 타이머 (0) | 2018.07.07 |
JavaScript 오류(Error) 다루기 (0) | 2018.07.01 |
변수 (0) | 2018.05.31 |
프로그래밍 언어 (0) | 2018.05.26 |