Bộ 15 - 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, từ khóa nào cho phép khai báo lại một biến đã tồn tại trong cùng một phạm vi mà không gây lỗi?
💡 Lời giải chi tiết:
Từ khóa 'var' cho phép khai báo lại biến trong cùng một phạm vi trong khi 'let' và 'const' sẽ báo lỗi SyntaxError. Kết luận Lý giải var
Câu 2:Kết quả của biểu thức so sánh '0 == false' và '0 === false' lần lượt là gì?
💡 Lời giải chi tiết:
Toán tử '==' thực hiện chuyển đổi kiểu dữ liệu (0 và false đều là falsy), còn '===' so sánh cả giá trị và kiểu dữ liệu khác nhau. Kết luận Lý giải true và false
Câu 3:Giá trị trả về của biểu thức 'typeof null' trong JavaScript là gì?
💡 Lời giải chi tiết:
Do một lỗi lịch sử trong thiết kế của JavaScript, kiểu dữ liệu của null được trả về là 'object' thay vì chính nó. Kết luận Lý giải 'object'
Câu 4:Phương thức mảng nào dưới đây trả về một mảng mới thay vì thay đổi mảng hiện tại?
💡 Lời giải chi tiết:
Phương thức 'map' tạo ra một mảng mới từ kết quả của việc gọi hàm trên mỗi phần tử, trong khi các phương thức khác thay đổi trực tiếp mảng gốc. Kết luận Lý giải map()
Câu 5:Trong cơ chế Hoisting, điều gì xảy ra với các khai báo hàm (function declarations)?
💡 Lời giải chi tiết:
Hoisting cho phép các khai báo hàm được đưa toàn bộ lên đầu phạm vi, giúp chúng có thể được gọi trước khi xuất hiện trong mã nguồn. Kết luận Lý giải Toàn bộ nội dung hàm được đưa lên đầu phạm vi
Câu 6:Khái niệm Closure (đóng gói) trong JavaScript được hiểu như thế nào?
💡 Lời giải chi tiết:
Closure được hình thành khi một hàm được định nghĩa bên trong một hàm khác, cho phép nó ghi nhớ môi trường nơi nó được tạo ra. Kết luận Lý giải Là khả năng một hàm ghi nhớ và truy cập phạm vi bên ngoài của nó ngay cả khi hàm đó được thực thi bên ngoài phạm vi đó
Câu 7:Kết quả của phép so sánh 'NaN === NaN' là gì?
💡 Lời giải chi tiết:
Theo tiêu chuẩn IEEE 754, giá trị NaN (Not-a-Number) 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. Kết luận Lý giải false
Câu 8:Thành phần nào trong JavaScript Engine chịu trách nhiệm điều phối việc thực thi mã không đồng bộ (asynchronous code)?
💡 Lời giải chi tiết:
Event Loop liên tục kiểm tra Call Stack và đẩy các callback từ hàng đợi vào stack để thực thi khi stack trống. Kết luận Lý giải Event Loop
Câu 9: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ó ràng buộc 'this' riêng mà nó sẽ lấy giá trị 'this' từ ngữ cảnh bên ngoài nơi nó được định nghĩa. Kết luận Lý giải Nó kế thừa giá trị 'this' từ phạm vi bao quanh (lexical scope) tại thời điểm hàm được tạo
Câu 10:Toán tử Spread (...) được sử dụng để làm gì khi thao tác với đối tượng (object)?
💡 Lời giải chi tiết:
Toán tử Spread cho phép liệt kê các thuộc tính của một đối tượng vào một đối tượng mới, tạo ra một bản sao không ảnh hưởng đến cấu trúc lồng nhau sâu. Kết luận Lý giải Để thực hiện sao chép nông (shallow copy) các thuộc tính từ đối tượng này sang đối tượng khác
Câu 11:Ba trạng thái có thể có của một Promise trong JavaScript là gì?
💡 Lời giải chi tiết:
Một Promise luôn bắt đầu ở trạng thái pending và sau đó chuyển sang fulfilled khi thành công hoặc rejected khi có lỗi. Kết luận Lý giải pending, fulfilled, rejected
Câu 12:Dữ liệu nào sau đây KHÔNG thuộc nhóm kiểu dữ liệu nguyên thủy (primitive types) trong JavaScript?
💡 Lời giải chi tiết:
Trong JavaScript, Array là một dạng đối tượng đặc biệt (object), không phải là kiểu dữ liệu nguyên thủy như string hay boolean. Kết luận Lý giải Array
Câu 13:Việc sử dụng 'use strict' ở đầu file JavaScript mang lại lợi ích gì?
💡 Lời giải chi tiết:
Chế độ nghiêm ngặt giúp phát hiện các lỗi lập trình phổ biến và ngăn chặn việc gán giá trị cho các biến chưa được khai báo chính thức. Kết luận Lý giải Bắt lỗi các hành vi không an toàn và ngăn chặn việc sử dụng các biến chưa khai báo
Câu 14:Kết quả của biểu thức '[1, 2, 3].reduce((acc, curr) => acc + curr, 5)' là bao nhiêu?
💡 Lời giải chi tiết:
Hàm reduce bắt đầu với giá trị tích lũy bằng 5, sau đó cộng lần lượt 1, 2, 3 để cho ra kết quả cuối cùng là 11. Kết luận Lý giải 11
Câu 15:Khi khai báo một đối tượng bằng từ khóa 'const', chúng ta có thể thực hiện hành động nào sau đây?
💡 Lời giải chi tiết:
Từ khóa 'const' ngăn cản việc gán lại định danh của biến nhưng vẫn cho phép sửa đổi nội dung của đối tượng mà nó tham chiếu đến. Kết luận Lý giải Thay đổi hoặc thêm các thuộc tính bên trong đối tượng đó
Câu 16:Cú pháp Template Literals trong ES6 sử dụng ký tự nào để bao quanh chuỗi?
💡 Lời giải chi tiết:
Template Literals sử dụng dấu huyền (backticks) cho phép viết chuỗi trên nhiều dòng và nhúng các biểu thức bằng cú pháp ${}. Kết luận Lý giải Dấu huyền (backticks)
Câu 17:Đối tượng toàn cục (Global Object) trong môi trường trình duyệt web là gì?
💡 Lời giải chi tiết:
Trong trình duyệt, 'window' là đối tượng cấp cao nhất chứa mọi biến và hàm toàn cục được định nghĩa. Kết luận Lý giải window
Câu 18:Phương thức nào được dùng để chuyển đổi một đối tượng JavaScript thành một chuỗi định dạng JSON?
💡 Lời giải chi tiết:
Phương thức 'JSON.stringify()' thực hiện tuần tự hóa một đối tượng thành một chuỗi văn bản JSON để truyền tải dữ liệu. Kết luận Lý giải JSON.stringify()
Câu 19:Giá trị của biểu thức 'true && 'Hello'' là gì?
💡 Lời giải chi tiết:
Toán tử logic AND (&&) sẽ trả về giá trị của toán hạng cuối cùng nếu tất cả các toán hạng trước đó đều là truthy. Kết luận Lý giải 'Hello'
Câu 20:Sự khác biệt chính giữa phương thức 'filter()' và 'find()' của mảng là gì?
💡 Lời giải chi tiết:
Phương thức 'filter' tạo mảng mới chứa mọi kết quả khớp, trong khi 'find' dừng lại ngay khi tìm thấy giá trị đầu tiên thỏa mãn. Kết luận Lý giải filter() trả về tất cả các phần tử thỏa mãn điều kiện, find() chỉ trả về phần tử đầu tiên tìm thấy
Câu 21:Cách phổ biến và an toàn nhất để xử lý lỗi khi sử dụng Async/Await là gì?
💡 Lời giải chi tiết:
Khối 'try...catch' cho phép bắt và xử lý các biệt lệ phát sinh từ các Promise bị từ chối bên trong hàm async một cách tường minh. Kết luận Lý giải Sử dụng khối try...catch bao quanh mã bất đồng bộ
Câu 22:Kỹ thuật 'Destructuring' trong JavaScript dùng để làm gì?
💡 Lời giải chi tiết:
Cú pháp destructuring giúp viết mã sạch hơn khi cần lấy nhiều giá trị từ các cấu trúc dữ liệu phức tạp. Kết luận Lý giải Để trích xuất các giá trị từ mảng hoặc thuộc tính từ đối tượng vào các biến riêng biệt một cách ngắn gọn
Câu 23:Cơ chế 'Event Delegation' dựa trên hiện tượng nào của sự kiện trong DOM?
💡 Lời giải chi tiết:
Sự kiện nổi bọt cho phép các sự kiện xảy ra trên phần tử con được truyền ngược lên các phần tử cha, giúp quản lý sự kiện tập trung hiệu quả. Kết luận Lý giải Event Bubbling (Sự kiện nổi bọt)
Câu 24:Mục đích chính của kỹ thuật Debouncing trong lập trình JavaScript là gì?
💡 Lời giải chi tiết:
Debouncing giúp tối ưu hóa hiệu suất bằng cách hạn chế tần suất gọi các hàm xử lý sự kiện đắt đỏ như khi người dùng nhập liệu liên tục. Kết luận Lý giải Để đảm bảo một hàm chỉ được thực thi sau khi một khoảng thời gian chờ nhất định kết thúc kể từ lần gọi cuối cùng
Câu 25:Đặc điểm chính của kiểu dữ liệu Symbol là gì?
💡 Lời giải chi tiết:
Mỗi Symbol được tạo ra là hoàn toàn khác biệt, giúp tránh xung đột tên thuộc tính trong các đối tượng phức tạp. Kết luận Lý giải Nó tạo ra các giá trị duy nhất và không thể thay đổi, thường dùng làm khóa cho thuộc tính đối tượng