JavaScript is required

Đoạn code sau sẽ có kết quả:
const a = {
stringField: 'Joe',
numberField: 123,
dateField: new Date('1995-12-17T03:24:00'),
nestedField: { field: 'Nested' }
};
const b = JSON.parse(JSON.stringify(a));
console.log(
a.stringField === b.stringField,
a.numberField === b.numberField,
a.dateField === b.dateField,
a.nestedField.field === b.nestedField.field
);

A.
true true true true
B.
true true true false
C.
true true false true
D.
false false false false
Trả lời:

Đáp án đúng: C


Đoạn code trên thực hiện việc deep clone object `a` bằng cách sử dụng `JSON.stringify` và `JSON.parse`. Tuy nhiên, cần lưu ý rằng `JSON.stringify` sẽ chuyển đổi `Date` object thành string theo chuẩn ISO 8601. Khi `JSON.parse` được sử dụng, string này sẽ được parse lại thành một `Date` object mới. Vì vậy, `a.dateField` và `b.dateField` là hai object khác nhau, mặc dù chúng có cùng giá trị thời gian. Do đó, phép so sánh `a.dateField === b.dateField` sẽ trả về `false`. Các trường còn lại là kiểu nguyên thủy (string, number) nên khi so sánh bằng `===` sẽ trả về `true` nếu giá trị bằng nhau. Phân tích từng dòng console.log: - `a.stringField === b.stringField`: `true` (so sánh string) - `a.numberField === b.numberField`: `true` (so sánh number) - `a.dateField === b.dateField`: `false` (so sánh object Date, hai object khác nhau) - `a.nestedField.field === b.nestedField.field`: `true` (so sánh string) Vậy, kết quả cuối cùng là `true true false true`

Tổng hợp 500 câu hỏi trắc nghiệm Javascript có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan