모던 자바스크립트 입문 책을 정리한 내용입니다.
이름 | 값 |
---|---|
suit | "하트" |
rank | "A" |
var card = { suit: "하트", rank : "A"};
card.suit // -> 하트
card["rank"] // -> A
card.color // -> undefined
var obj = {};
console.log(obj); // -> Object{}
card.value = 14;
console.log(card); // -> Object {suit: "하트", rank: "A", value: 14}
delete card.rank;
delete card.suit;
console.log(card); // -> Object {value: 14}
프로퍼티 이름을 뜻하는 문자열 in 객체명
var card = {suit: "heart"};
console.log("suit" in card); // -> true
console.log("color" in card); // -> false
프로퍼티에 저장된 값의 타입이 함수이면 그 프로퍼티를 메서드라고 부릅니다.
수학에서는 함수는 주어진 입력 x에 대해 출력 y를 대응시키는 규칙입니다.
function square(x) { return x * x; }
return문 다음에는 줄 바꿈 문자를 넣지 말아야 합니다.
return
x / x;
이렇게 작성하면 자바스크립트 엔진은 이 코드를 다음과 같이 해석합니다.
return;
x / x;
즉, 값이 없는 return 문으로 해석합니다.
console.log(square(5)); // -> 25
function square(x) { retrun x * x; }
function add1(x) { return x = x + 1; }
var a = 3;
var b = add1(a);
console.log("a = " + a + ", b = " + b); // -> a = 3, b = 4
add1은 전달받은 인수에 1을 더하여 반환하는 함수입니다. 이 함수가 호출될 때 변수 a의 복사본이 인자 x에 할당됩니다. 즉, 인수에 원시 값을 넘기면 그 값 복사를 실행합니다.
이 때 변수 a와 변수 x는 다른 영역의 메모리에 위치한 별개의 변수입니다.
function add1(p) {p.x = p.x + 1; p.y = p.y + 1; return p; }
var a = {x:3, y:4}
var b = add1(a);
console.log(a, b); // Object{x=4, y=5} Object{x=4, y=5}
인수로 객체를 넘겼을 때는 전달되는 값은 참조 값입니다.
이 때 p와 a는 똑같은 객체를 참조하고 있습니다.
function setBallProperties(x, y, vx, vy, radius) {
...
}
setBallProperties(0, 0, 10, 15, 5);
//------------------
function setBallProperties2(params) {
...
}
var parameters = {
x : 0,
y : 0,
vx : 10,
vy : 15,
radius : 5,
color : "blue"
};
setBallProperties2(parameters);
function f() {
console.log(a); // -> undefined
var a = "local";
console.log(a); // -> local
return a;
}
function Card(suit, rank) {
this.suit = suit;
this.rank = rank;
}
var card = new Card("하트", "A");
console.log(card); // -> Card {suit : "하트", rank : "A"}
function Circle(center, radius) {
this.center = center;
this.radius = radius;
this.area = function() {
return Math.PI * this.radius * this.radius;
};
}
var p = {x:0, y:0};
var c = new Circle(p, 2.0);
console.log("넓이 = " + c.area());
var evens = [2, 4, 6, 8];
var evens = [2, 4, 6, 8];
evens.length // => 4
var evens = new Array(2, 4, 6, 8);
var empty = new Array();
var various = new Array(3.14, "pi", true, {x:1, y:2}, [2, 4, 6, 8]);
var x = new Array(3);
console.log(x.length); // -> 3
var x = new Array(-3);
var a = ["A"]
console.log(a["0"]) // -> A
a[2] // -> undefined
var a = [1, 2, 3];
a.push(4);
console.log(a); // -> [1, 2, 3, 4]
delete a[0];
console.log(a); // -> [undefined, 2, 3, 4]
var a = [1, 2, 3];
a[4] = 5;
console.log(a); // -> [1, 2, 3, undefined, 5];
배열 요소가 있는지 확인하기
배열 요소가 있는지 확인하는 방법은 객체의 프로퍼티가 있는지 확인하는 방법과 같습니다.
for/in 문이나 hasOwnProperty 메서드를 사용해서 확인할 수 있습니다.var a = [0, 1, 2, undefined, 4]; for (var i of a) console.log(i); // 0, 1, 2, 4가 표시됨 a.hasOwnProperty("3"); // -> false a.hasOwnProperty("4"); // -> true