Bộ 8 - 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 phép toán 'typeof null' là gì?
💡 Lời giải chi tiết:
Theo đặc tả ECMAScript, 'typeof null' trả về 'object' do một lỗi thiết kế lịch sử vẫn được giữ lại để đảm bảo tính tương thích ngược cho các ứng dụng web đời đầu. Kết luận Lý giải: 'object'
Câu 2:Sự khác biệt chính giữa toán tử so sánh '==' và '===' trong JavaScript là gì?
💡 Lời giải chi tiết:
Toán tử '==' thực hiện ép kiểu tự động (type 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: '===' 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 3:Khi nói về 'hoisting' trong JavaScript, điểm khác biệt nào sau đây giữa 'var' và 'let' là chính xác?
💡 Lời giải chi tiết:
Biến khai báo bằng 'var' được khởi tạo là 'undefined' khi hoisting, còn 'let' nằm trong 'Temporal Dead Zone' (vùng chết tạm thời) và sẽ gây lỗi nếu truy cập trước dòng khai báo. Kết luận Lý giải: Cả hai đều được hoisting nhưng 'let' không thể truy cập trước khi khai báo do vùng chết tạm thời
Câu 4:Phương thức 'map' của đối tượng Array trong JavaScript có đặc điểm nào sau đây?
💡 Lời giải chi tiết:
Phương thức 'map' duyệt qua từng phần tử của mảng gốc, áp dụng một hàm biến đổi và trả về một mảng hoàn toàn mới có cùng độ dài. Kết luận Lý giải: Tạo ra một mảng mới với các phần tử là kết quả của việc thực thi một hàm trên từng phần tử của mảng cũ
Câu 5:Giá trị của từ khóa 'this' bên 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 tự định nghĩa từ khóa 'this' riêng mà nó 'mượn' giá trị 'this' từ ngữ cảnh mà nó được định nghĩa (lexical scoping). Kết luận Lý giải: Nó kế thừa 'this' từ phạm vi bao quanh (lexical scope)
Câu 6:Kiểu dữ liệu chính thức của giá trị 'NaN' (Not-a-Number) trong JavaScript là gì?
💡 Lời giải chi tiết:
Mặc dù đại diện cho một kết quả toán học không hợp lệ, nhưng theo tiêu chuẩn IEEE 754 mà JavaScript tuân theo, 'NaN' vẫn thuộc kiểu dữ liệu số. Kết luận Lý giải: 'number'
Câu 7:Điều gì xảy ra khi bạn cố gắng thay đổi giá trị một thuộc tính của đối tượng được khai báo bằng từ khóa 'const'?
💡 Lời giải chi tiết:
Từ khóa 'const' chỉ ngăn chặn việc gán lại tham chiếu của biến sang một đối tượng khác, nhưng không ngăn cản việc sửa đổi các thuộc tính bên trong đối tượng đó. Kết luận Lý giải: Đối tượng vẫn có thể bị thay đổi nội dung các thuộc tính bên trong
Câu 8:Kỹ thuật 'Event Delegation' (ủy quyền sự kiện) trong JavaScript dựa trên cơ chế lan truyền nào?
💡 Lời giải chi tiết:
Ủy quyền sự kiện tận dụng việc sự kiện nổi bọt từ phần tử con lên phần tử cha để quản lý nhiều trình xử lý sự kiện tại một điểm duy nhất. Kết luận Lý giải: Cơ chế 'Event Bubbling' (sự kiện nổi bọt)
Câu 9:Trong JavaScript, khái niệm 'Closure' (đóng gói) được hiểu là gì?
💡 Lời giải chi tiết:
Closure được tạo ra mỗi khi một hàm được định nghĩa bên trong một hàm khác, cho phép hàm con truy cập các biến của hàm cha ngay cả sau khi hàm cha đã chạy xong. Kết luận Lý giải: Một hàm có khả năng ghi nhớ và truy cập vào phạm vi chứa nó ngay cả khi nó được thực thi bên ngoài phạm vi đó
Câu 10:JavaScript xử lý các tác vụ bất đồng bộ (asynchronous) dựa trên cơ chế cốt lõi nào?
💡 Lời giải chi tiết:
Mặc dù là ngôn ngữ đơn luồng, JavaScript xử lý bất đồng bộ bằng cách đưa các tác vụ vào hàng đợi và thực thi chúng thông qua 'Event Loop' khi ngăn xếp chính trống. Kết luận Lý giải: 'Event Loop' (vòng lặp sự kiện)
Câu 11:Việc đặt chuỗi 'use strict' ở đầu file JavaScript nhằm mục đích gì?
💡 Lời giải chi tiết:
Chế độ 'strict mode' giúp ngăn chặn các hành vi không an toàn như sử dụng biến chưa khai báo và giúp lập trình viên phát hiện lỗi sớm hơn. Kết luận Lý giải: Bắt buộc thực thi mã trong một ngữ cảnh nghiêm ngặt hơn để giảm thiểu lỗi
Câu 12:Điều gì xảy ra với phương thức 'Promise.all([])' nếu có một Promise trong danh sách bị lỗi (reject)?
💡 Lời giải chi tiết:
'Promise.all' hoạt động theo nguyên tắc 'tất cả hoặc không gì cả', nó sẽ thất bại ngay khi gặp Promise đầu tiên bị từ chối. Kết luận Lý giải: Toàn bộ 'Promise.all' sẽ bị 'reject' ngay lập tức
Câu 13:Kết quả của biểu thức 'false && doSomething()' trong JavaScript là gì nếu 'doSomething' là một hàm?
💡 Lời giải chi tiết:
Toán tử '&&' sử dụng cơ chế đánh giá ngắn mạch (short-circuit evaluation), nếu vế trái là 'false', JavaScript sẽ bỏ qua việc thực thi vế phải. Kết luận Lý giải: Luôn trả về 'false' mà không thực hiện vế phải
Câu 14:Điểm khác biệt lớn nhất giữa 'Object.freeze()' và 'Object.seal()' là gì?
💡 Lời giải chi tiết:
'Object.freeze()' làm cho đối tượng hoàn toàn không thể thay đổi, trong khi 'Object.seal()' ngăn chặn thêm/xóa thuộc tính nhưng vẫn cho phép cập nhật giá trị thuộc tính cũ. Kết luận Lý giải: 'freeze' ngăn chặn mọi thay đổi, 'seal' chỉ cho phép sửa giá trị thuộc tính hiện có
Câu 15:Theo tiêu chuẩn JavaScript hiện đại, có bao nhiêu kiểu dữ liệu nguyên thủy (primitive types)?
💡 Lời giải chi tiết:
Bảy kiểu dữ liệu nguyên thủy bao gồm: String, Number, Boolean, Null, Undefined, Symbol và BigInt. Kết luận Lý giải: 7
Câu 16:Cú pháp nào sau đây sử dụng toán tử spread để tạo một bản sao nông (shallow copy) của mảng 'arr'?
💡 Lời giải chi tiết:
Toán tử spread '...' dùng trong dấu ngoặc vuông sẽ giải nén các phần tử của mảng cũ vào một mảng mới hoàn toàn độc lập về tham chiếu. Kết luận Lý giải: [...arr]
Câu 17:Khi sử dụng 'JSON.stringify()' trên một đối tượng, các thuộc tính có giá trị là hàm (function) sẽ được xử lý như thế nào?
💡 Lời giải chi tiết:
Vì định dạng JSON không hỗ trợ kiểu dữ liệu hàm, nên phương thức 'JSON.stringify()' sẽ tự động bỏ qua các cặp key-value mà value là một hàm. Kết luận Lý giải: Các thuộc tính chứa hàm sẽ bị loại bỏ hoàn toàn
Câu 18:Trong JavaScript, tham số 'rest' (...args) đặt ở cuối danh sách tham số của hàm có vai trò gì?
💡 Lời giải chi tiết:
Tham số 'rest' cho phép lập trình viên đại diện cho một số lượng đối số không xác định dưới dạng một mảng bên trong thân hàm. Kết luận Lý giải: Thu thập tất cả các đối số còn lại vào một mảng
Câu 19:Ký tự nào được dùng để bao quanh một 'Template Literal' trong JavaScript nhằm hỗ trợ nhúng biểu thức?
💡 Lời giải chi tiết:
Template Literals sử dụng cặp dấu huyền (backticks) cho phép viết chuỗi trên nhiều dòng và sử dụng cú pháp '${}' để nhúng biến. Kết luận Lý giải: Dấu huyền (backticks ')
Câu 20:Điều gì cần lưu ý về tham số 'initialValue' trong phương thức 'Array.prototype.reduce()'?
💡 Lời giải chi tiết:
Nếu không có giá trị khởi tạo, 'reduce' lấy phần tử đầu tiên của mảng làm accumulator; tuy nhiên, gọi 'reduce' trên mảng rỗng mà không có 'initialValue' sẽ ném ra lỗi 'TypeError'. Kết luận Lý giải: Không bắt buộc, nhưng nếu thiếu trên mảng rỗng sẽ gây lỗi
Câu 21:Một hàm được định nghĩa với từ khóa 'async' sẽ luôn luôn trả về một giá trị có kiểu là gì?
💡 Lời giải chi tiết:
Mọi hàm 'async' đều tự động bọc giá trị trả về của nó (ngay cả khi đó là một giá trị nguyên thủy) vào trong một Promise đã được giải quyết (resolved). Kết luận Lý giải: Một Promise
Câu 22:Thuộc tính '__proto__' của một đối tượng trong JavaScript trỏ đến đâu?
💡 Lời giải chi tiết:
Thuộc tính ẩn '__proto__' được sử dụng để liên kết đối tượng với nguyên mẫu (prototype) của nó, tạo thành chuỗi kế thừa nguyên mẫu đặc trưng của JavaScript. Kết luận Lý giải: 'prototype' của hàm tạo ra đối tượng đó
Câu 23:Đặc điểm quan trọng nhất giúp phân biệt đối tượng 'Set' với đối tượng 'Array' thông thường là gì?
💡 Lời giải chi tiết:
Đối tượng 'Set' là một tập hợp các giá trị không có thứ tự và quan trọng nhất là nó tự động loại bỏ mọi giá trị trùng lặp khi được thêm vào. 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 24:Sự khác biệt về ý nghĩa giữa 'null' và 'undefined' trong JavaScript là gì?
💡 Lời giải chi tiết:
Trong khi 'undefined' chỉ trạng thái chưa được định nghĩa giá trị, 'null' thường được lập trình viên sử dụng một cách chủ động để chỉ ra rằng biến đó không chứa đối tượng nào. Kết luận Lý giải: 'undefined' là giá trị mặc định của biến chưa gán, 'null' là giá trị gán chủ đích để biểu thị rỗng
Câu 25:Nếu không có phần tử nào trong mảng thỏa mãn điều kiện lọc, phương thức 'find()' sẽ trả về kết quả gì?
💡 Lời giải chi tiết:
Phương thức 'find' tìm phần tử đầu tiên thỏa mãn hàm kiểm tra; nếu duyệt hết mảng mà không có kết quả, giá trị trả về mặc định là 'undefined'. Kết luận Lý giải: 'undefined'