Bộ 5 - Trắc nghiệm JavaScript (JS Quiz) online có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:Trong JavaScript, kết quả của biểu thức 'typeof null' là gì?
💡 Lời giải chi tiết:
Mặc dù 'null' là một kiểu dữ liệu nguyên thủy, nhưng do lỗi thiết kế từ phiên bản đầu tiên của JavaScript, toán tử 'typeof' vẫn trả về giá trị 'object'. Kết luận Lý giải 'object'.
Câu 2:Kết quả của phép toán '1 + '1' - 1' trong JavaScript là bao nhiêu?
💡 Lời giải chi tiết:
Biểu thức '1 + '1'' thực hiện phép cộng chuỗi tạo ra '11', sau đó phép trừ ép kiểu chuỗi thành số thực hiện phép tính '11 - 1' cho ra kết quả 10. Kết luận Lý giải 10.
Câu 3:Giá trị của 'typeof NaN' trong JavaScript là gì?
💡 Lời giải chi tiết:
Theo đặc tả ECMAScript, NaN (Not-a-Number) được định nghĩa kỹ thuật là một giá trị thuộc kiểu dữ liệu số. Kết luận Lý giải 'number'.
Câu 4:Sự khác biệt chính giữa '==' và '===' trong JavaScript là gì?
💡 Lời giải chi tiết:
Toán tử '==' thực hiện chuyển đổi kiểu tự động (coercion) trước khi so sánh, trong khi '===' yêu cầu cả giá trị và kiểu dữ liệu phải trùng khớp hoàn toàn. Kết luận Lý giải '==' chỉ so sánh giá trị sau khi ép kiểu, '===' so sánh cả giá trị và kiểu dữ liệu mà không ép kiểu.
Câu 5:Từ khóa nào được sử dụng để khai báo một biến có phạm vi khối (block scope) và không thể gán lại giá trị?
💡 Lời giải chi tiết:
Từ khóa 'const' được sử dụng để khai báo hằng số trong phạm vi khối và ngăn chặn việc gán lại giá trị mới cho biến đó. Kết luận Lý giải 'const'.
Câu 6:Hàm 'map' của mảng trong JavaScript trả về kết quả như thế nào?
💡 Lời giải chi tiết:
Phương thức 'map' tạo ra một mảng hoàn toàn mới chứa kết quả của việc gọi hàm được cung cấp trên mọi phần tử trong mảng gọi nó mà không làm thay đổi mảng gốc. Kết luận Lý giải Trả về một mảng mới với các phần tử đã được biến đổi bởi hàm callback.
Câu 7:Trong JavaScript, giá trị nào sau đây được coi là 'falsy' khi chuyển đổi sang kiểu Boolean?
💡 Lời giải chi tiết:
Các giá trị 'falsy' trong JavaScript bao gồm false, 0, -0, 0n, '', null, undefined và NaN, trong đó mảng và đối tượng rỗng luôn là 'truthy'. Kết luận Lý giải Chuỗi rỗng ''.
Câu 8:Từ khóa 'this' trong một hàm mũi tên (arrow function) được xác định như thế nào?
💡 Lời giải chi tiết:
Hàm mũi tên không có ngữ cảnh 'this' riêng mà nó tự động lấy giá trị 'this' từ phạm vi mã nơi nó được định nghĩa. Kết luận Lý giải Kế thừa 'this' từ phạm vi bao quanh nó (lexical scoping).
Câu 9:Kết quả của biểu thức '[] == ![]' trong JavaScript là gì?
💡 Lời giải chi tiết:
Do quy tắc ép kiểu phức tạp, '![]' trở thành 'false', và khi so sánh '[] == false', cả hai đều được ép về số 0, dẫn đến kết quả là đúng. Kết luận Lý giải true.
Câu 10:Thứ tự thực thi nào là đúng khi kết hợp giữa Promise (Microtask) và setTimeout (Macrotask)?
💡 Lời giải chi tiết:
Event Loop trong JavaScript ưu tiên xử lý toàn bộ hàng đợi Microtask trước khi chuyển sang tác vụ kế tiếp trong hàng đợi Macrotask. Kết luận Lý giải Các tác vụ trong hàng đợi Microtask (Promise) sẽ được ưu tiên thực hiện trước các tác vụ Macrotask (setTimeout) sau khi lời gọi hàm hiện tại kết thúc.
Câu 11:Phương thức nào được dùng để chuyển đổi một chuỗi JSON thành một đối tượng JavaScript?
💡 Lời giải chi tiết:
Hàm 'JSON.parse' được thiết kế để phân tích một chuỗi văn bản theo định dạng JSON và xây dựng lại giá trị hoặc đối tượng tương ứng. Kết luận Lý giải JSON.parse().
Câu 12:Toán tử 'spread' (...) khi áp dụng lên một đối tượng có tác dụng gì?
💡 Lời giải chi tiết:
Toán tử spread thực hiện sao chép các thuộc tính ở cấp độ đầu tiên (shallow copy) từ đối tượng nguồn sang đối tượng đích. Kết luận Lý giải Sao chép các thuộc tính có thể liệt kê của một đối tượng vào một đối tượng mới (shallow copy).
Câu 13:Trong 'strict mode' (chế độ nghiêm ngặt), việc gán giá trị cho một biến chưa được khai báo sẽ dẫn đến kết quả gì?
💡 Lời giải chi tiết:
Chế độ nghiêm ngặt ngăn chặn việc vô tình tạo ra biến toàn cục bằng cách ném ra một lỗi 'ReferenceError' nếu biến đó chưa được định nghĩa chính thức. Kết luận Lý giải Gây ra lỗi tham chiếu (ReferenceError).
Câu 14:Kết quả của biểu thức 'typeof typeof 1' là gì?
💡 Lời giải chi tiết:
Kết quả của 'typeof 1' là chuỗi ''number'', và khi áp dụng 'typeof' lên chuỗi này, kết quả nhận được là ''string''. Kết luận Lý giải 'string'.
Câu 15:Lợi ích chính của việc sử dụng 'Object.freeze()' là gì?
💡 Lời giải chi tiết:
Phương thức 'Object.freeze' đóng băng hoàn toàn một đối tượng, khiến các thuộc tính của nó trở thành bất biến và không thể cấu hình lại. Kết luận Lý giải Làm cho đối tượng không thể thay đổi, bao gồm việc thêm, xóa hoặc sửa đổi các thuộc tính hiện có.
Câu 16:Phương thức 'Array.isArray()' được dùng để làm gì?
💡 Lời giải chi tiết:
Vì 'typeof' trả về 'object' cho cả mảng và đối tượng thông thường, nên 'Array.isArray' là cách tin cậy nhất để kiểm tra kiểu mảng trong JavaScript. Kết luận Lý giải Xác định xem giá trị được truyền vào có phải là một mảng (Array) hay không.
Câu 17:Trong JavaScript, biểu thức 'NaN === NaN' trả về kết quả nào?
💡 Lời giải chi tiết:
NaN là giá trị duy nhất trong JavaScript không bằng chính nó khi sử dụng các toán tử so sánh bằng. Kết luận Lý giải false.
Câu 18:Kết quả của phép tính ''5' * 2' là gì?
💡 Lời giải chi tiết:
Toán tử nhân (*) buộc JavaScript phải ép kiểu chuỗi ''5'' thành số 5 trước khi thực hiện phép tính với số 2. Kết luận Lý giải 10.
Câu 19:Hàm 'bind()' có tác dụng gì trong JavaScript?
💡 Lời giải chi tiết:
Không giống như 'call' hay 'apply', phương thức 'bind' trả về một hàm bao bọc mới cho phép giữ nguyên giá trị 'this' đã được thiết lập. Kết luận Lý giải Tạo ra một hàm mới với ngữ cảnh 'this' được cố định theo giá trị truyền vào.
Câu 20:Trong một 'class' của JavaScript (ES6), từ khóa 'super' được dùng để làm gì?
💡 Lời giải chi tiết:
Từ khóa 'super' cho phép lớp con truy cập và gọi các thành phần tương ứng từ lớp cha mà nó kế thừa. Kết luận Lý giải Để gọi các hàm hoặc hàm khởi tạo (constructor) của lớp cha.
Câu 21:Kết quả của biểu thức 'true + false' trong JavaScript là bao nhiêu?
💡 Lời giải chi tiết:
Khi thực hiện phép cộng số học, 'true' được ép kiểu thành 1 và 'false' được ép kiểu thành 0, tổng của chúng là 1. Kết luận Lý giải 1.
Câu 22:Điểm khác biệt giữa 'null' và 'undefined' là gì?
💡 Lời giải chi tiết:
'undefined' thường là giá trị mặc định của hệ thống cho biến chưa khởi tạo, trong khi 'null' được lập trình viên sử dụng để gán rõ ràng rằng một biến không có giá trị. Kết luận Lý giải 'undefined' nghĩa là biến chưa được gán giá trị, còn 'null' là một giá trị đại diện cho sự trống rỗng có chủ đích.
Câu 23:Đâu là cách chính xác để khai báo một hàm Generator trong JavaScript?
💡 Lời giải chi tiết:
Hàm generator được nhận diện bởi dấu sao (*) đi kèm sau từ khóa 'function', cho phép hàm tạm dừng và tiếp tục thực thi. Kết luận Lý giải function* gen() {}.
Câu 24:Toán tử 'nullish coalescing' (??) trả về giá trị bên phải khi nào?
💡 Lời giải chi tiết:
Khác với toán tử '||', toán tử '??' chỉ xem xét hai giá trị là 'null' và 'undefined' để quyết định lấy giá trị mặc định bên phải. Kết luận Lý giải Khi toán hạng bên trái là 'null' hoặc 'undefined'.
Câu 25:Trong JavaScript, mảng (Array) thực chất là kiểu dữ liệu gì?
💡 Lời giải chi tiết:
Mảng trong JavaScript được kế thừa từ nguyên mẫu 'Object' và được tối ưu hóa để làm việc với danh sách các phần tử theo chỉ số. Kết luận Lý giải Mảng là một đối tượng (Object) đặc biệt.