JavaScript is required

Đoạn code sẽ cho kết quả
const a = {};
const b = { key: 'b' };
const c = { key: 'c' };
a[b] = 123;
a[c] = 456;
console.log(a[b]);

A.
123
B.
456
C.
undefined
D.
ReferenceError
Trả lời:

Đáp án đúng: B


Trong JavaScript, khi sử dụng một object làm key cho một object khác, JavaScript sẽ tự động gọi phương thức `toString()` của object đó để tạo ra một string key. Trong trường hợp này, cả `b` và `c` đều là các object, và khi chúng được sử dụng làm key trong object `a`, cả hai đều sẽ được chuyển đổi thành string `[object Object]`. Do đó, `a[b]` và `a[c]` thực chất là cùng một key `a['[object Object]']`. Dòng `a[b] = 123;` gán giá trị 123 cho key `[object Object]` trong object `a`. Sau đó, dòng `a[c] = 456;` gán giá trị 456 cho cùng key `[object Object]` trong object `a`, ghi đè giá trị trước đó. Vì vậy, khi `console.log(a[b]);` được thực thi, nó sẽ in ra giá trị hiện tại của key `[object Object]` trong object `a`, đó là 456. Vì vậy, đáp án đúng là B. 456.

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