Đoạn code sau sẽ cho kết quả như thế nào?
Trả lời:
Đáp án đúng: D
Đoạn code sử dụng tính chất hoisting của JavaScript.
* **Hoisting:** Trong JavaScript, các khai báo biến và hàm được "đưa lên" đầu phạm vi của chúng trước khi code được thực thi. Tuy nhiên, chỉ có khai báo được đưa lên, còn việc gán giá trị thì không.
* **Phân tích code:**
* `console.log(duthaho)`: Tại dòng này, biến `duthaho` đã được khai báo (do hoisting) nhưng chưa được gán giá trị. Do đó, giá trị của nó là `undefined`.
* `duthaho = 69`: Gán giá trị 69 cho biến `duthaho`.
* `console.log("duthaho is " + duthaho)`: In ra "duthaho is 69" vì `duthaho` lúc này đã có giá trị là 69.
* `function duthaho() { ... }`: Đây là một khai báo hàm. Do hoisting, khai báo hàm này được đưa lên đầu phạm vi. Tuy nhiên, hàm này sẽ ghi đè giá trị của biến `duthaho` (đã gán giá trị 69 ở trên) bằng chính định nghĩa của hàm.
* `console.log(typeof duthaho)`: In ra kiểu dữ liệu của `duthaho`. Vì `duthaho` hiện đang tham chiếu đến một hàm, nên kiểu dữ liệu là "function".
* **Kết luận:**
* Dòng `console.log(duthaho)` đầu tiên in ra `undefined`.
* Dòng `console.log("duthaho is " + duthaho)` thứ hai in ra `duthaho is 69`.
Vậy, không có đáp án nào hoàn toàn chính xác. Đáp án gần đúng nhất là "duthaho is 69 function" nếu ta coi `console.log(duthaho)` đầu tiên không in ra gì, và dòng `console.log(typeof duthaho)` được hiểu là in ra giá trị của `duthaho` (là function).
Tổng hợp 500 câu hỏi trắc nghiệm Javascript có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.
50 câu hỏi 60 phút
Câu hỏi liên quan

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
