목록JavaScript (6)
2022
콘솔에 찍힐 b 값을 예상해보고, 어디에서 선언된 “b”가 몇번째 라인에서 호출한 console.log에 찍혔는지, 왜 그런지 설명해보세요. 주석을 풀어보고 오류가 난다면 왜 오류가 나는 지 설명하고 오류를 수정해보세요. let b = 1; function hi () { const a = 1; let b = 100; b++; console.log(a,b); } //console.log(a); // 변수가 함수 안에 선언되었기 때문에 함수 밖에서 사용할 수 없음. // 이 콘솔을 작동 시키고 싶다면 변수 선언을 바깥으로 빼면 가능. console.log(b); // 1줄에 선언된 변수 b의 값. hi(); // 함수 안에서 선언된 a = 1, b = 100. b++이므로 1을 더해 (1, 101) 출력 c..
보호되어 있는 글입니다.
얕은 복사(shallow copy) 얖은 복사는 참조(주소)값의 복사를 나타낸다. const obj = { vaule: 1 } const newObj = obj; newObj.vaule = 2; console.log(obj.vaule); // 2 console.log(obj === newObj); // true obj 객체를 새로운 newObj 객체에 할당하였으며 이를 참조 할당이라 부른다. 복사 후 newObj 객체의 value값을 변경하였더니 기존의 obj.value값도 같이 변경된 것을 알 수 있다. 두 객체를 비교해도 true로 나온다. 이렇게 자바스크립트의 참조 타입은 얕은 복사가 된다고 볼 수 있으며, 이는 데이터가 그대로 생성되는 것이 아닌 해당 데이터의 참조 값(메모리 주소)를 전달하여 결..
const 이 중 const 키워드를 사용하면 상수 변수 선언을 할 수 있다. 그리고 const는 상수로 취급되기 때문에 다음과 같이 값을 변경하려고 시도하면 에러가 발생한다. const str = 'hello'; str = 'hey'; // Uncaught TypeError: Assignment to constant variable. Object.freeze() 자바스크립트에서 제공하는 Object.freeze()는 MDN 문서에서 "객체를 동결하기 위한 메서드"라고 설명하고 있다. 즉, Object.freeze를 사용하면 동결된 객체를 만들 수 있고, 동결된 객체에는 속성을 추가하거나 제거하는 동작이 불가능한 Immutable한 객체를 만들 수 있는 것이다. 또한 Object.freeze로 동결된 객..