Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: [Thiết kế Web] Mô phỏng hoisting biến

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 10: JavaScript căn bản (1): giới thiệu, biến, kiểu dữ liệu, toán tử, hàm — khóa Thiết kế Web

    Trong JavaScript, biến khai báo bằng var được "hoisting" (đưa lên) và thuộc phạm vi hàm/toàn cục (function scope), không bị giới hạn theo khối lệnh {}; trong khi biến khai báo bằng let chỉ thuộc phạm vi khối lệnh chứa nó (block scope) và có thể che (shadow) biến var cùng tên trong phạm vi khối đó.

    Cho m lệnh, mỗi lệnh là một trong các dạng:

    • "BEGIN" (mở một khối lệnh mới).
    • "END" (đóng khối lệnh hiện tại; không END khối ngoài cùng).
    • "VAR x v" (khai báo/gán var x = v, luôn thuộc phạm vi hàm/toàn cục dùng chung, không phụ thuộc khối hiện tại).
    • "LET x v" (khai báo let x = v trong khối hiện tại).
    • "GET x" (tìm giá trị x: trước tiên tìm trong các khối let từ khối hiện tại ra ngoài dần theo scope chain; nếu không tìm thấy ở bất kỳ khối let nào, tìm trong phạm vi var dùng chung; nếu vẫn không có, kết quả là undefined).
    • Định dạng đầu vào:

      Dòng đầu tiên là số nguyên m (1 ≤ m ≤ 500). m dòng tiếp theo, mỗi dòng là một lệnh theo đúng các dạng trên.

    • Ràng buộc đầu vào:

      1 ≤ m ≤ 500. Tên biến chỉ gồm chữ cái thường, độ dài ≤ 20. Số lệnh END không vượt quá số lệnh BEGIN đã mở.

    • Định dạng đầu ra:

      Với mỗi lệnh GET, in một dòng là giá trị tìm được (số nguyên) hoặc "undefined", theo đúng thứ tự các lệnh GET xuất hiện trong đầu vào.

    Ví dụ:

    Đầu vào:

    6
    VAR x 1
    BEGIN
    LET x 2
    GET x
    END
    GET x
    

    Đầu ra:

    2
    1

    Chủ đề

    🌐 Thiết kế WebThiết kế WebThiết kế Web: JavaScript — Cơ bảnTất cả môn học

    Đang tải editor...