Bộ 1 - 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 NaN' là gì?
💡 Lời giải chi tiết:
Theo đặc tả ECMAScript, NaN (Not-a-Number) được phân loại là một giá trị thuộc kiểu dữ liệu số, vì vậy Kết luận Lý giải 'number'
Câu 2: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ử '===' thực hiện so sánh nghiêm ngặt mà không ép kiểu tự động, yêu cầu cả giá trị và kiểu dữ liệu phải trùng khớp, nên Kết luận Lý giải '===' so sánh cả giá trị và kiểu dữ liệu, còn '==' chỉ so sánh giá trị sau khi chuyển đổi kiểu
Câu 3:Kết quả của biểu thức '0.1 + 0.2 === 0.3' trong JavaScript là gì?
💡 Lời giải chi tiết:
Do cách biểu diễn số thực dấu phẩy động theo chuẩn IEEE 754, kết quả của phép cộng này là 0.30000000000000004 thay vì 0.3 chính xác, dẫn đến Kết luận Lý giải false
Câu 4: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à giá trị của nó không thể bị gán lại?
💡 Lời giải chi tiết:
Trong ES6, 'const' được dùng để khai báo hằng số có phạm vi khối và ngăn chặn việc gán lại giá trị mới sau khi đã khởi tạo, nên Kết luận Lý giải const
Câu 5:Phương thức 'Array.prototype.map()' 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 bằng cách gọi một hàm callback trên mọi phần tử của mảng hiện tại mà không làm thay đổi mảng gốc, vì vậy Kết luận Lý giải Một mảng mới có cùng độ dài với mảng ban đầu
Câu 6:Cơ chế 'Hoisting' trong JavaScript ảnh hưởng như thế nào đến các biến khai báo bằng từ khóa 'var'?
💡 Lời giải chi tiết:
Khi sử dụng 'var', trình biên dịch đưa phần khai báo lên đầu phạm vi và gán giá trị mặc định ban đầu là 'undefined', nên Kết luận Lý giải Khai báo biến được đưa lên đầu và khởi tạo là 'undefined'
Câu 7:Khái niệm 'Closure' trong JavaScript có thể được hiểu đơn giản là gì?
💡 Lời giải chi tiết:
Closure là khả năng một hàm bên trong ghi nhớ và truy cập được các biến thuộc phạm vi của hàm cha ngay cả khi hàm cha đã kết thúc thực thi, vì thế Kết luận Lý giải Một hàm có quyền truy cập vào phạm vi của hàm bao quanh nó
Câu 8:Trong JavaScript, kết quả của 'typeof null' là gì?
💡 Lời giải chi tiết:
Đây là một lỗi thiết kế từ phiên bản đầu tiên của JavaScript khi 'null' được gắn nhãn kiểu dữ liệu là đối tượng, nên Kết luận Lý giải 'object'
Câu 9:Phương thức nào được sử dụng để chuyển đổi một chuỗi định dạng JSON thành một đối tượng JavaScript?
💡 Lời giải chi tiết:
Để chuyển một chuỗi văn bản JSON về dạng đối tượng có thể thao tác được trong mã nguồn, ta sử dụng phương thức 'JSON.parse()', nên Kết luận Lý giải 'JSON.parse()'
Câu 10:Giá trị của 'this' bên trong một hàm mũi tên (arrow function) được xác định dựa trên yếu tố 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 nơi nó được định nghĩa, nên Kết luận Lý giải Nó được kế thừa từ phạm vi bao quanh (lexical scope)
Câu 11:Việc sử dụng câu lệnh '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 lập trình viên phát hiện các lỗi vô ý như sử dụng biến chưa khai báo và vô hiệu hóa các tính năng dễ gây nhầm lẫn, vì vậy Kết luận Lý giải Giúp bắt lỗi sớm và ngăn chặn các hành vi không an toàn
Câu 12:Sự khác biệt về phạm vi (scope) giữa 'let' và 'var' là gì?
💡 Lời giải chi tiết:
Biến 'let' giới hạn phạm vi trong cặp ngoặc nhọn gần nhất (khối), trong khi 'var' có phạm vi xuyên suốt hàm chứa nó, nên Kết luận Lý giải 'let' có phạm vi khối, 'var' có phạm vi hàm
Câu 13:Phương thức 'Array.prototype.reduce()' nhận vào tối đa bao nhiêu đối số (arguments) trực tiếp trong lời gọi hàm?
💡 Lời giải chi tiết:
Phương thức 'reduce' nhận vào hai đối số chính là một hàm callback (reducer) và một giá trị khởi tạo tùy chọn, vì vậy Kết luận Lý giải 2
Câu 14:Khái niệm 'Temporal Dead Zone' (vùng chết tạm thời) thường liên quan đến những từ khóa khai báo biến nào?
💡 Lời giải chi tiết:
Temporal Dead Zone là trạng thái từ khi bắt đầu khối lệnh cho đến khi biến được khai báo bằng 'let' hoặc 'const' thực sự được khởi tạo, khiến việc truy cập sớm bị lỗi, nên Kết luận Lý giải 'let' và 'const'
Câu 15:Kết quả của phép so sánh 'NaN === NaN' trong JavaScript là gì?
💡 Lời giải chi tiết:
Dựa trên tiêu chuẩn IEEE 754, giá trị NaN được thiết kế để không bao giờ bằng chính nó trong bất kỳ phép so sánh bằng nào, nên Kết luận Lý giải false
Câu 16:Để kiểm tra một giá trị có phải là một mảng (Array) hay không, phương thức nào sau đây là chính xác nhất?
💡 Lời giải chi tiết:
Vì 'typeof' trả về 'object' cho mảng, phương thức tĩnh 'Array.isArray()' được sinh ra để xác định chính xác kiểu dữ liệu mảng, do đó Kết luận Lý giải 'Array.isArray()'
Câu 17:Toán tử '??' (nullish coalescing) khác toán tử '||' (logical OR) ở điểm cơ bản nào?
💡 Lời giải chi tiết:
Toán tử '??' chỉ lấy giá trị bên phải nếu giá trị bên trái là 'null' hoặc 'undefined', trong khi '||' lấy giá trị bên phải cho mọi giá trị 'falsy' bao gồm cả 0 và chuỗi rỗng, nên Kết luận Lý giải '??' chỉ kiểm tra 'null' hoặc 'undefined'
Câu 18:Phương thức 'Object.freeze()' có tác dụng gì đối với một đối tượng JavaScript?
💡 Lời giải chi tiết:
'Object.freeze' đóng băng đối tượng, khiến ta không thể thêm, xóa hoặc thay đổi giá trị của bất kỳ thuộc tính nào hiện có, vì vậy Kết luận Lý giải Ngăn chặn mọi thay đổi đối với đối tượng
Câu 19:Điều gì xảy ra khi một Promise trong mảng truyền vào 'Promise.all()' bị từ chối (reject)?
💡 Lời giải chi tiết:
Cơ chế của 'Promise.all' là 'thất bại nhanh', nghĩa là nó sẽ lập tức bị từ chối ngay khi có ít nhất một Promise thành phần gặp lỗi, nên Kết luận Lý giải Một Promise bị từ chối (reject)
Câu 20:Cơ chế 'event bubbling' (nổi bọt sự kiện) trong DOM hoạt động theo trình tự nào?
💡 Lời giải chi tiết:
Nổi bọt sự kiện là quy trình mà một sự kiện sau khi kích hoạt tại phần tử đích sẽ tiếp tục truyền lên tất cả các phần tử bao bọc nó cho đến thẻ 'window', nên Kết luận Lý giải Sự kiện lan truyền từ phần tử con lên các phần tử cha
Câu 21:Kết quả của biểu thức '[] + []' trong JavaScript là gì?
💡 Lời giải chi tiết:
Khi cộng hai mảng, JavaScript ép kiểu chúng thành chuỗi, và vì mảng rỗng tương đương chuỗi rỗng, kết quả nối lại vẫn là chuỗi rỗng, nên Kết luận Lý giải Một chuỗi rỗng (empty string)
Câu 22:Thuộc tính nào của đối tượng Array được dùng để xác định số lượng phần tử hiện có trong mảng?
💡 Lời giải chi tiết:
Trong JavaScript, mảng sử dụng thuộc tính 'length' để lưu trữ và truy xuất thông tin về tổng số lượng phần tử đang có, vì vậy Kết luận Lý giải length
Câu 23:Mục đích chính của phương thức 'bind()' trong JavaScript là gì?
💡 Lời giải chi tiết:
Phương thức 'bind()' trả về một bản sao của hàm gốc nhưng được ràng buộc cố định với một ngữ cảnh 'this' cụ thể cho các lần gọi sau này, nên Kết luận Lý giải Tạo ra một hàm mới với giá trị 'this' được xác định trước
Câu 24:Để ngăn chặn hành vi mặc định của trình duyệt khi một sự kiện xảy ra (ví dụ: ngăn trang web tải lại khi gửi form), ta dùng phương thức nào?
💡 Lời giải chi tiết:
Phương thức 'event.preventDefault()' yêu cầu trình duyệt không thực hiện các hành động mặc định vốn có của sự kiện đó, vì thế Kết luận Lý giải event.preventDefault()
Câu 25:Trong phiên bản ES6, kiểu dữ liệu nguyên thủy 'Symbol' thường được ứng dụng để làm gì?
💡 Lời giải chi tiết:
Symbols tạo ra các giá trị định danh độc nhất không thể trùng lặp, giúp tránh xung đột tên khi thêm thuộc tính vào các đối tượng, nên Kết luận Lý giải Tạo ra các khóa thuộc tính đối tượng duy nhất