JavaScript - 문제 미리보기

문제 762

hard
다음 코드의 실행 결과로 올바른 것은?
```javascript
const obj = {
name: "John",
age: function() {return 30;},
city: "New York",
birth: new Date("1986-12-14")
};
const jsonString = JSON.stringify(obj);
console.log(jsonString);
```
A. `{"name":"John","age":"function() {return 30;}","city":"New York","birth":"1986-12-14T00:00:00.000Z"}`
B. `{"name":"John","city":"New York","birth":"1986-12-14T00:00:00.000Z"}`
C. `{"name":"John","age":30,"city":"New York","birth":"1986-12-14"}`
D. 오류 발생

정답: B

`JSON.stringify()`는 JavaScript 객체를 JSON 문자열로 변환할 때 다음과 같은 규칙을 적용합니다:

1. 함수는 완전히 제거됩니다: `age` 속성의 함수는 키와 값 모두 JSON 문자열에서 사라집니다.

2. Date 객체는 문자열로 변환됩니다: `new Date("1986-12-14")`는 ISO 8601 형식의 문자열 `"1986-12-14T00:00:00.000Z"`로 변환됩니다.

3. 일반 속성은 그대로 유지됩니다: `name`과 `city`는 그대로 포함됩니다.

따라서 결과는 `age` 속성이 없고, `birth`가 ISO 날짜 문자열로 변환된 형태가 됩니다.

중요한 점: 함수를 JSON에 포함시키려면 `JSON.stringify()` 호출 전에 `obj.age = obj.age.toString()`처럼 미리 문자열로 변환해야 하지만, 이 경우 나중에 다시 함수로 사용하려면 `eval()`을 써야 하므로 권장되지 않습니다.

💡 학습 팁

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