❓ JavaScript Koans란
Koans는 불교에서 유래된 단어로, 결론을 내리기 전에 이게 왜 맞는지 깊게 고민한다는 의미를 가지고 있다고 합니다.
JavaScript Koans는 부트캠프에서 하게 된 자바스크립트를 전체적으로 공부하고 되돌아보며 문제를 푸는 시스템입니다.
🙁 하면서 헷갈렸던 부분
Object.assign
const obj = {
mastermind: "Joker",
henchwoman: "Harley",
relations: ["Anarky", "Duela Dent", "Lucy"],
twins: {
"Jared Leto": "Suicide Squad",
"Joaquin Phoenix": "Joker",
"Heath Ledger": "The Dark Knight",
"Jack Nicholson": "Tim Burton Batman",
},
};
const copiedObj = Object.assign({}, obj);
delete obj.twins["Jared Leto"];
console.log("Jared Leto" in copiedObj.twins); // false
너무 간단하게 생각해서 copiedObj는 obj를 Object.assign
으로 복사를 했기 때문에 둘이 다른 것이라고 판단해 obj에서 삭제해도 true
가 나올 것이라고 생각했습니다.
하지만 결과는 false
였습니다.
다시 생각해보니 Object.assign
은 참조 자료형 내부에 있는 참조 자료형까지는 복사를 못하는 얕은 복사이기 때문에, copiedObj의 내부 객체인 twins와 obj의 twins와 주소가 동일해서 obj의 twins["Jared Leto"]
를 삭제하면 copiedObj에서도 같이 삭제되어 false
가 나오는 것입니다.
💡 새롭게 알게된 점
arguments
arguments
는 자바스크립트 함수 내에서 사용되는 지역 변수입니다. 이 변수는 함수를 호출할 때 전달된 인자들을 배열 형태로 저장합니다. 이 배열은 함수 내에서 arguments
라는 이름으로 사용됩니다.
function sum() {
let result = 0;
for (let i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
sum(1, 2, 3); // 6
sum(1, 2, 3, 4, 5); // 15
이 함수는 호출할 때 전달된 모든 인자들의 합을 계산하여 반환합니다. 이때, arguments
를 사용하여 함수가 호출될 때 전달된 모든 인자들을 합산할 수 있습니다.
따라서, arguments
는 함수 내에서 가변적인 인자를 다루는 데 유용하게 사용됩니다.
'코드스테이츠 프론트엔드' 카테고리의 다른 글
[SEB_FE] 나만의 아고라 스테이츠 만들기 (1) | 2023.03.18 |
---|---|
[SEB_FE] 유효성 검사 예제 (0) | 2023.03.18 |
[SEB_FE] 작동하는 계산기 만들기 (0) | 2023.03.18 |
[SEB_FE] 계산기 목업 만들기 (0) | 2023.03.18 |
[SEB_FE] OT (0) | 2023.03.18 |