JavaScript is required

Kết quả của đoạn mã sau là gì?

(function() {

var a = b = 5;

})();

console.log(b);

A.

null

B.

5

C.

undefined

D.

Xảy ra lỗi

Trả lời:

Đáp án đúng: B


Đoạn mã JavaScript này minh họa một lỗi phổ biến liên quan đến phạm vi biến. Khi bạn viết `var a = b = 5;` bên trong một hàm, điều này có nghĩa là: 1. `b = 5;`: Nếu `b` chưa được khai báo trước đó, JavaScript sẽ tự động khai báo `b` ở phạm vi toàn cục (global scope). Điều này xảy ra vì JavaScript gán giá trị từ phải sang trái. 2. `var a = b;`: Biến `a` được khai báo bằng `var` bên trong hàm, do đó `a` có phạm vi cục bộ (local scope) trong hàm. Khi `console.log(b);` được gọi bên ngoài hàm, nó sẽ in giá trị của biến `b` đã được khai báo ở phạm vi toàn cục. Do đó, kết quả sẽ là `5`. **Giải thích tại sao các đáp án khác sai:** * **A. null:** `b` không được gán giá trị `null` ở bất kỳ đâu trong đoạn mã. * **C. undefined:** `b` đã được gán giá trị `5` trước khi `console.log(b)` được gọi. * **D. Xảy ra lỗi:** Đoạn mã không gây ra lỗi, vì `b` được khai báo ngầm ở phạm vi toàn cục.

Câu hỏi liên quan