Bộ 10 - 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:
Dựa trên thiết kế ban đầu của ngôn ngữ, 'null' được phân loại là một 'object' dù nó đại diện cho giá trị trống, và điều này được giữ lại để tương thích ngược. Kết luận Lý giải object
Câu 2:Giá trị của biểu thức '[] == ![]' trong JavaScript là bao nhiêu?
💡 Lời giải chi tiết:
Khi so sánh, '![]' chuyển thành 'false', sau đó cả hai vế được ép kiểu về số đều bằng 0, dẫn đến kết quả là đúng. Kết luận Lý giải true
Câu 3:Kết quả của phép toán '3 + 2 + '7'' là gì?
💡 Lời giải chi tiết:
Phép cộng thực hiện từ trái sang phải, '3 + 2' bằng 5, sau đó số 5 cộng với chuỗi '7' sẽ thực hiện phép nối chuỗi. Kết luận Lý giải '57'
Câu 4:Điều gì xảy ra khi cố gắng truy cập một biến được khai báo bằng 'let' trước khi nó được khởi tạo?
💡 Lời giải chi tiết:
Các biến khai báo bằng 'let' nằm trong vùng chết tạm thời (Temporal Dead Zone) từ khi bắt đầu khối cho đến khi dòng khai báo được thực thi. Kết luận Lý giải Gây ra ReferenceError
Câu 5:Sự khác biệt chính giữa phương thức 'map' và 'forEach' của mảng là gì?
💡 Lời giải chi tiết:
Phương thức 'map' tạo ra một mảng mới dựa trên kết quả của hàm gọi lại, trong khi 'forEach' chỉ lặp qua các phần tử và trả về 'undefined'. Kết luận Lý giải 'map' trả về mảng mới, 'forEach' thì không
Câu 6:Trong một hàm mũi tên (arrow function), từ khóa 'this' tham chiếu đến đối tượng 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ó kế thừa 'this' từ ngữ cảnh bên ngoài nơi nó được định nghĩa. Kết luận Lý giải Giá trị 'this' từ phạm vi bao quanh nó (lexical scope)
Câu 7:Kết quả của biểu thức 'typeof NaN' là gì?
💡 Lời giải chi tiết:
Mặc dù 'NaN' viết tắt của 'Not-a-Number', về mặt kỹ thuật trong JavaScript nó vẫn thuộc kiểu dữ liệu số. Kết luận Lý giải number
Câu 8:Kết quả của biểu thức '0.1 + 0.2 === 0.3' 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, tổng của 0.1 và 0.2 trong JavaScript sẽ xấp xỉ 0.30000000000000004 thay vì đúng 0.3. Kết luận Lý giải false
Câu 9:Phương thức nào dùng để ngăn chặn hoàn toàn việc thêm, xóa hoặc sửa đổi thuộc tính của một đối tượng?
💡 Lời giải chi tiết:
Phương thức 'Object.freeze' làm cho một đối tượng trở thành bất biến, không thể thay đổi giá trị hiện có hoặc cấu trúc của nó. Kết luận Lý giải Object.freeze()
Câu 10:Trong mô hình Event Loop, Promise.then() được xếp vào loại hàng đợi nào?
💡 Lời giải chi tiết:
Các phản hồi từ Promise được ưu tiên xử lý trong hàng đợi Microtask ngay sau khi tác vụ hiện tại hoàn tất và trước khi chuyển sang Macrotask tiếp theo. Kết luận Lý giải Microtask queue
Câu 11:Biểu thức 'null == undefined' trả về kết quả nào?
💡 Lời giải chi tiết:
Trong so sánh không nghiêm ngặt (==), JavaScript quy định 'null' và 'undefined' bằng nhau nhưng chúng không bằng bất kỳ giá trị nào khác. Kết luận Lý giải true
Câu 12:Kết quả của biểu thức 'NaN === NaN' là gì?
💡 Lời giải chi tiết:
Theo quy tắc của IEEE 754 và JavaScript, 'NaN' là giá trị duy nhất 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 13:Cách chính xác nhất để kiểm tra một biến có phải là mảng hay không?
💡 Lời giải chi tiết:
Phương thức 'Array.isArray' là cách tiêu chuẩn và tin cậy nhất để xác định một giá trị có phải là mảng hay không, vượt qua được các hạn chế của 'typeof'. Kết luận Lý giải Array.isArray(variable)
Câu 14:Tham số thứ hai của hàm 'JSON.stringify' (replacer) dùng để làm gì?
💡 Lời giải chi tiết:
Tham số 'replacer' cho phép lọc hoặc biến đổi các thuộc tính của đối tượng trước khi quá trình chuyển đổi sang chuỗi JSON diễn ra. Kết luận Lý giải Thay đổi các thuộc tính sẽ được chuyển đổi thành chuỗi
Câu 15:Cú pháp '...args' trong định nghĩa hàm được gọi là gì?
💡 Lời giải chi tiết:
Khi được sử dụng trong danh sách tham số của hàm, cú pháp dấu ba chấm giúp thu thập tất cả các đối số còn lại vào một mảng duy nhất. Kết luận Lý giải Rest parameter
Câu 16:Toán tử '...' khi dùng để sao chép một đối tượng ('{...obj}') thực hiện kiểu sao chép nào?
💡 Lời giải chi tiết:
Toán tử Spread chỉ sao chép các thuộc tính ở cấp độ đầu tiên của đối tượng, còn các đối tượng lồng bên trong vẫn được giữ dưới dạng tham chiếu. Kết luận Lý giải Shallow Copy (Sao chép nông)
Câu 17:Closure trong JavaScript cho phép một hàm truy cập vào các biến từ đâu?
💡 Lời giải chi tiết:
Closure là sự kết hợp của một hàm và môi trường tham chiếu nơi nó được tạo ra, cho phép hàm ghi nhớ phạm vi bao quanh nó. Kết luận Lý giải Phạm vi bên ngoài nơi hàm được định nghĩa
Câu 18:Mục đích chính của phương thức 'call()' là gì?
💡 Lời giải chi tiết:
Phương thức 'call' cho phép mượn hàm và thực thi nó với một ngữ cảnh 'this' do người dùng chỉ định thay vì ngữ cảnh mặc định. Kết luận Lý giải Gọi hàm với một giá trị 'this' cụ thể và các đối số liệt kê riêng lẻ
Câu 19:Phương thức 'bind()' khác với 'call()' và 'apply()' ở điểm cốt lõi nào?
💡 Lời giải chi tiết:
Trong khi 'call' và 'apply' gọi hàm ngay lập tức, 'bind' tạo ra một hàm mới có thể được thực thi sau này với 'this' cố định. Kết luận Lý giải Nó trả về một hàm mới với ngữ cảnh 'this' đã được thiết lập
Câu 20:Toán tử '??' (Nullish coalescing) trả về vế 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 giá trị là null hoặc undefined để trả về giá trị mặc định bên phải. Kết luận Lý giải Vế trái là null hoặc undefined
Câu 21:Khi sử dụng chế độ 'use strict', 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 tạo biến toàn cục một cách vô ý, yêu cầu mọi biến phải được khai báo rõ ràng trước khi sử dụng. Kết luận Lý giải Gây ra lỗi ReferenceError
Câu 22:Đối tượng 'Set' trong JavaScript lưu trữ các giá trị theo nguyên tắc nào?
💡 Lời giải chi tiết:
Cấu trúc dữ liệu 'Set' được thiết kế để đảm bảo mỗi phần tử bên trong nó là duy nhất, các giá trị trùng lặp sẽ bị loại bỏ tự động. Kết luận Lý giải Lưu trữ các giá trị duy nhất, không trùng lặp
Câu 23:Một hàm được đánh dấu bằng từ khóa 'async' luôn luôn trả về giá trị thuộc kiểu gì?
💡 Lời giải chi tiết:
Các hàm 'async' mặc định sẽ bọc giá trị trả về của chúng bên trong một Promise đã được giải quyết (resolved). Kết luận Lý giải Promise
Câu 24:Từ khóa nào được sử dụng bên trong một 'generator function' để tạm dừng thực thi và trả về giá trị?
💡 Lời giải chi tiết:
Trong hàm generator, 'yield' được dùng để phát ra một giá trị và tạm dừng hàm cho đến khi phương thức 'next' được gọi lại. Kết luận Lý giải yield
Câu 25:Đặc điểm nổi bật nhất của kiểu dữ liệu 'Symbol' là gì?
💡 Lời giải chi tiết:
Kiểu dữ liệu 'Symbol' tạo ra các định danh duy nhất, thường được sử dụng để tạo ra các khóa thuộc tính ẩn hoặc đặc biệt cho đối tượng. Kết luận Lý giải Nó tạo ra các giá trị hoàn toàn duy nhất và không thể thay đổi