Tài liệu
/
Làm rối VM
/

Tương thích chế độ strict

Tương thích chế độ strict

Quan trọng

Làm rối VM cần biết ngay lúc biên dịch liệu mã có chạy ở chế độ strict hay không. Nếu mã của bạn dựa vào hành vi của chế độ strict, bạn phải khai báo điều đó một cách tường minh.

Vì sao? VM biên dịch mã của bạn thành bytecode trước khi thực thi. Nó cần biết ngữ cảnh chế độ strict trong lúc biên dịch để tạo ra bytecode chính xác cho các hành vi riêng của chế độ strict (ví dụ: cách ràng buộc this, tham số trùng tên, hành vi của đối tượng arguments).

Tùy chọn strictMode điều khiển cách trình làm rối quyết định. Với strictMode: null (mặc định) và strictMode: false, mã chỉ được coi là strict ở những nơi nó tự khai báo: một chỉ thị 'use strict'; tường minh, cú pháp ES module, hoặc phương thức của class. Mọi phần còn lại được biên dịch ở chế độ sloppy. strictMode: true coi toàn bộ đầu vào là strict. Hãy khớp với ngữ cảnh mà bundle cuối cùng thực sự chạy.

Chế độ strict cấp tệp

Thêm 'use strict'; ở đầu tệp để bật chế độ strict cho toàn bộ mã:

JavaScript

Chế độ strict cấp hàm

Thêm 'use strict'; bên trong các hàm cụ thể nếu chỉ một số hàm cần chế độ strict:

JavaScript

Vấn đề thường gặp: Nếu bundler hoặc công cụ build của bạn tự động thêm 'use strict'; (ví dụ một bundler bọc mã nguồn CommonJS hoặc script thuần trong đầu ra ở chế độ strict), nhưng bạn làm rối mã nguồn trước khi đóng gói, VM sẽ không biết về chế độ strict. Hãy thêm chỉ thị này vào các tệp nguồn, đặt strictMode: true, hoặc làm rối sau khi đóng gói.