Bộ 4 - 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 'var' có phạm vi (scope) như thế nào so với 'let' và 'const'?
💡 Lời giải chi tiết:
Theo đặc tả ECMAScript, biến khai báo bằng 'var' có phạm vi trong hàm gần nhất chứa nó hoặc phạm vi toàn cục nếu khai báo ngoài hàm, khác với 'let' và 'const' có phạm vi khối. Kết luận Lý giải Phạm vi hàm (function scope)
Câu 2:Kết quả của biểu thức 'typeof null' trong JavaScript là gì?
💡 Lời giải chi tiết:
Đây là một lỗi thiết kế lịch sử trong JavaScript từ phiên bản đầu tiên khi coi 'null' là một tham chiếu đối tượng rỗng. Kết luận Lý giải 'object'
Câu 3:Sự khác biệt chính giữa toán tử '==' và '===' trong JavaScript là gì?
💡 Lời giải chi tiết:
Toán tử '===' (so sánh nghiêm ngặt) yêu cầu cả giá trị và kiểu dữ liệu phải khớp, trong khi '==' thực hiện ép kiểu tự động trước khi so sánh. Kết luận Lý giải '===' so sánh cả giá trị và kiểu dữ liệu, '==' chỉ so sánh giá trị sau khi ép kiểu
Câu 4:Hàm nào sau đây được sử 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:
Phương thức JSON.parse() phân tích cú pháp một chuỗi văn bản định dạng JSON và xây dựng giá trị JavaScript tương ứng. Kết luận Lý giải JSON.parse()
Câu 5:Khái niệm 'Hoisting' trong JavaScript có nghĩa là gì?
💡 Lời giải chi tiết:
Hoisting là cơ chế của JavaScript cho phép các khai báo biến (với var) và hàm được di chuyển lên đầu phạm vi chứa chúng trong giai đoạn biên dịch. Kết luận Lý giải Đưa các khai báo biến và hàm lên đầu phạm vi của chúng trước khi thực thi mã
Câu 6:Kết quả của biểu thức '[] + []' trong JavaScript là gì?
💡 Lời giải chi tiết:
Khi sử dụng toán tử cộng với mảng, JavaScript sẽ chuyển đổi các mảng thành chuỗi rỗng và nối chúng lại với nhau. Kết luận Lý giải Một chuỗi rỗng ('')
Câu 7:Trong một 'Arrow Function', giá trị của từ khóa 'this' được xác định như thế nào?
💡 Lời giải chi tiết:
Arrow functions không có 'this' riêng mà chúng kế thừa 'this' từ ngữ cảnh thực thi bên ngoài trực tiếp của chúng. Kết luận Lý giải Kế thừa từ phạm vi bao quanh (lexical scope) nơi hàm được định nghĩa
Câu 8:Phương thức mảng nào sau đây tạo ra một mảng mới bằng cách lọc các phần tử thỏa mãn điều kiện?
💡 Lời giải chi tiết:
Phương thức filter() duyệt qua mảng và trả về một mảng mới chỉ chứa các phần tử vượt qua bài kiểm tra logic trong hàm callback. Kết luận Lý giải filter()
Câu 9:Kết quả của biểu thức '3 + 2 + '7'' là gì?
💡 Lời giải chi tiết:
JavaScript thực hiện phép cộng từ trái sang phải, 3 + 2 bằng 5, sau đó 5 cộng với chuỗi '7' dẫn đến phép nối chuỗi. Kết luận Lý giải '57'
Câu 10:Cơ chế 'Event Delegation' (Ủy quyền sự kiện) hoạt động dựa trên nguyên lý nào?
💡 Lời giải chi tiết:
Ủy quyền sự kiện tận dụng khả năng sự kiện nổi lên (bubbling) từ phần tử con lên các phần tử cha để quản lý sự kiện tại một điểm duy nhất. Kết luận Lý giải Event Bubbling
Câu 11:Lệnh 'use strict' ở đầu file JavaScript có tác dụng gì?
💡 Lời giải chi tiết:
Chế độ nghiêm ngặt giúp bắt các lỗi phổ biến, ngăn chặn việc sử dụng các biến chưa khai báo và các cú pháp lỗi thời. Kết luận Lý giải Bật chế độ kiểm tra lỗi nghiêm ngặt và ngăn chặn các hành vi không an toàn
Câu 12:Giá trị của biểu thức 'NaN === NaN' là gì?
💡 Lời giải chi tiết:
Theo tiêu chuẩn IEEE 754 và đặc tả JavaScript, NaN (Not-a-Number) là giá trị duy nhất không bằng chính nó. Kết luận Lý giải false
Câu 13:Trong Promise, trạng thái 'Fulfilled' có nghĩa là gì?
💡 Lời giải chi tiết:
Một Promise ở trạng thái 'fulfilled' khi nhiệm vụ bất đồng bộ kết thúc thành công và trả về một giá trị. Kết luận Lý giải Thao tác bất đồng bộ đã hoàn thành thành công
Câu 14:Toán tử 'Spread' (...) được sử dụng để làm gì trong JavaScript?
💡 Lời giải chi tiết:
Toán tử spread cho phép mở rộng một iterable (như mảng) hoặc đối tượng thành các phần tử riêng lẻ. Kết luận Lý giải Trải các phần tử của một mảng hoặc đối tượng vào một nơi khác
Câu 15:Phương thức 'Array.prototype.reduce()' trả về kết quả là gì?
💡 Lời giải chi tiết:
Hàm reduce() thực thi một hàm thu gọn trên từng phần tử của mảng để trả về một giá trị kết quả duy nhất. Kết luận Lý giải Một giá trị duy nhất sau khi tích lũy qua các phần tử
Câu 16:Hàm 'setTimeout()' trả về giá trị gì?
💡 Lời giải chi tiết:
setTimeout() trả về một ID duy nhất có thể được sử dụng với clearTimeout() để hủy bỏ việc thực thi hàm. Kết luận Lý giải Một số nguyên dương đại diện cho ID của bộ định thời (timer ID)
Câu 17:Để ngăn chặn hành vi mặc định của một sự kiện (ví dụ: ngăn form submit), ta sử dụng phương thức nào?
💡 Lời giải chi tiết:
Phương thức preventDefault() được dùng để hủy bỏ hành vi mặc định của trình duyệt đối với một sự kiện cụ thể. Kết luận Lý giải event.preventDefault()
Câu 18:Điểm khác biệt giữa 'Map' và 'Object' trong JavaScript là gì?
💡 Lời giải chi tiết:
Không giống như Object chỉ cho phép khóa là chuỗi hoặc Symbol, Map cho phép sử dụng hàm, đối tượng hoặc bất kỳ kiểu dữ liệu nào làm khóa. Kết luận Lý giải Khóa của Map có thể là bất kỳ kiểu dữ liệu nào, kể cả đối tượng
Câu 19:Từ khóa 'super' trong một lớp (class) con được dùng để làm gì?
💡 Lời giải chi tiết:
Từ khóa 'super' được sử dụng để gọi các hàm tương ứng của lớp cha, bao gồm cả constructor. Kết luận Lý giải Để truy cập các phương thức và hàm tạo của lớp cha
Câu 20:Kết quả của biểu thức 'false || 0 || 'hello' || true' là gì?
💡 Lời giải chi tiết:
Toán tử logic OR (||) trả về giá trị 'truthy' đầu tiên mà nó gặp phải trong chuỗi biểu thức. Kết luận Lý giải 'hello'
Câu 21:Đặc điểm của 'Template Literals' trong ES6 là gì?
💡 Lời giải chi tiết:
Template literals sử dụng dấu backtick (') và cho phép nội suy biến cũng như biểu thức một cách dễ dàng. Kết luận Lý giải Cho phép nhúng biểu thức bằng cú pháp ${expression}
Câu 22:Hàm 'Object.freeze()' có tác dụng gì đối với một đối tượng?
💡 Lời giải chi tiết:
Object.freeze() làm cho một đối tượng trở thành bất biến, không thể thay đổi cấu trúc hoặc giá trị các thuộc tính hiện có. Kết luận Lý giải Ngăn chặn việc thêm, xóa hoặc thay đổi bất kỳ thuộc tính nào của đối tượng
Câu 23:Trong vòng lặp Event Loop, 'Microtasks' (như Promise) được thực thi khi nào?
💡 Lời giải chi tiết:
Sau mỗi tác vụ macrotask, JavaScript sẽ kiểm tra và thực hiện toàn bộ hàng đợi microtask trước khi chuyển sang macrotask tiếp theo. Kết luận Lý giải Sau mỗi 'Macrotask' (như setTimeout) hoàn thành
Câu 24:Phương thức 'bind()' dùng để làm gì?
💡 Lời giải chi tiết:
Phương thức bind() tạo ra một hàm mới mà khi được gọi, nó sẽ có từ khóa 'this' được gán bằng giá trị truyền vào. Kết luận Lý giải Tạo ra một hàm mới với giá trị 'this' được thiết lập cố định
Câu 25:Kiểu dữ liệu 'Symbol' trong ES6 thường được sử dụng để làm gì?
💡 Lời giải chi tiết:
Mỗi giá trị Symbol là duy nhấ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 Để tạo ra các khóa (key) duy nhất cho các thuộc tính đối tượng