JavaScript - 문제 미리보기

문제 657

hard
다음 코드에서 C, D, E의 실행 결과는? ```javascript class Temperature { constructor(celsius) { this._celsius = celsius; } // A get fahrenheit() { return this._celsius * 9/5 + 32; } // B set fahrenheit(value) { this._celsius = (value - 32) * 5/9; } } const temp = new Temperature(25); console.log(temp.fahrenheit); // C temp.fahrenheit = 86; // D console.log(temp._celsius); // E ```
A. C: `77`, D: setter 실행됨, E: `30`
B. C: `25`, D: 오류 발생, E: `25`
C. C: `77`, D: setter 실행됨, E: `25`
D. C: 오류 발생, D: 오류 발생, E: `25`

정답: A

1) C: `77` - getter가 실행되어 섭씨 25도를 화씨로 변환: 25 × 9/5 + 32 = 77 2) D: setter 실행됨 - `temp.fahrenheit = 86`는 setter를 호출하여 화씨 86도를 섭씨로 변환하여 `_celsius`에 저장: (86 - 32) × 5/9 = 30 3) E: `30` - setter에 의해 변경된 값이 출력됨 중요한 개념들: 1) getter는 메서드이지만 속성처럼 괄호 없이 접근 (`temp.fahrenheit`) 2) setter도 메서드이지만 할당 연산자로 사용 (`temp.fahrenheit = 86`) 3) 언더스코어(`_`)는 private 속성임을 나타내는 관례 (실제로는 접근 가능) 4) getter/setter 이름은 실제 속성 이름과 달라야 함

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.